Jetbrains Datagrip 2017.1.3,在将数据转储到 sql 插入文件时强制导出列

Posted

技术标签:

【中文标题】Jetbrains Datagrip 2017.1.3,在将数据转储到 sql 插入文件时强制导出列【英文标题】:Jetbrains Datagrip 2017.1.3, force columns exported when dumping data to sql inserts file 【发布时间】:2017-05-04 09:26:10 【问题描述】:

我有一个包含大量表和数据的 SQL 服务器数据库。我需要在 docker 容器中本地复制它。 我已成功导出架构并复制了它。当我将数据转储到 SQL 文件时,它不会导出自动生成的字段(例如 ids 或 uuids)

这是用户表的架构:

 create table user (
    id_user bigint identity constraint PK_user primary key,
    uuid uniqueidentifier default newsequentialid() not null,
    id_salarie bigint constraint FK_user_salarie references salarie,
    date_creation datetime,
    login nvarchar(100)
)

当它从这个表中导出和元素时,我得到了这种插入:

INSERT INTO user(id_salarie, date_creation, login) VALUES (1, null, "example")

因此,我的大多数插入都给我外键错误,因为我的新数据库生成的 id 与旧数据库中的不一样。由于数据太多,我无法手动更改所有内容。

相反,我想要这种插入:

INSERT INTO user(id_user, uuid, id_salarie, date_creation, login) VALUES (1, 1, "manuallyentereduuid" null, "example")

有什么方法可以直接用 Datagrid 做到这一点?或者可能是一种特定的 SQL 服务器以这种方式生成插入语句的方式?

不要犹豫,在 cmets 中询问更多详细信息。

【问题讨论】:

什么 DBMS? mysql 这是一个 Microsoft SQL Server 2008 数据库。 【参考方案1】:

在配置 INSERT 提取器时,您需要“跳过生成的列”选项。

【讨论】:

做到了!非常感谢您的屏幕截图,这个选项并不明显。【参考方案2】:

Datagrip 似乎没有给你这种可能性,所以我使用了其他东西:DBeaver。它是免费的,并且基于 Eclipse 环境。

方法很简单:

选择所有要导出的表 右键->导出表数据

从那里您只需按照说明进行操作。它为每个表输出一个文件,如果您有相应的容量,这是一件好事。我在执行整个脚本时遇到了麻烦,在使用 Datagrip 时不得不拆分它。

希望这可以帮助遇到同样问题的任何人。如果您直接在datagrip中找到解决方案,我也想知道。

编辑:见上面的答案

【讨论】:

以上是关于Jetbrains Datagrip 2017.1.3,在将数据转储到 sql 插入文件时强制导出列的主要内容,如果未能解决你的问题,请参考以下文章

无法在 JetBrains DataGrip 2020.1.4 中设置 SQLServer 连接

JetBrains DataGrip工具配置数据库过程详解

如何在 JetBrains DataGrip 中复制选择的查询字段名称

如何通过 Jetbrains DataGrip 连接到远程 MS SQL Server 数据库?

JetBrains DataGrip 搜索实用程序

JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀