如何通过 DataGrip 每 100 行创建一个 sql 插入语句

Posted

技术标签:

【中文标题】如何通过 DataGrip 每 100 行创建一个 sql 插入语句【英文标题】:How to make one sql insert statement every 100 rows by DataGrip 【发布时间】:2018-11-05 05:15:23 【问题描述】:

升级到 Mojave 后,Sequel Pro 开始崩溃。 我将使用 DataGrip 作为主要的数据库工具。但是我有一个问题没有找到解决办法: Datagrip → 转储数据到文件 → SQL Inerts

DataGrip 生成的插入语句如下所示:

INSERT INTO high_school_list (id, name) VALUES (1, 'a');
INSERT INTO high_school_list (id, name) VALUES (2, 'b');
INSERT INTO high_school_list (id, name) VALUES (3, 'c');

这样的sql执行效率很低。 Sequel Pro 生成的插入语句为:

INSERT INTO high_school_list (id, name) VALUES (1, 'a'), (2, 'b'), (3, 'c');

如何设置datagrip生成类似Sequel Pro的Insert Sql格式语句?

【问题讨论】:

【参考方案1】:
    下载此脚本文件:https://gist.github.com/leo-from-spb/ec438f1fe9995b910ad816aabe47dd4f 将其放入脚本文件夹(要找到它,请按提取器下拉菜单中的转到脚本目录)。 使用这个提取器。

【讨论】:

您好,以上步骤我已经完成了。在Data Extractor中选择“SQL - INSERT - STATEMENTS.SQL.Groovy”,然后在右键菜单中再次选择Dump Data → To File,导致SQL文本仍然是INSERT INTO per line。 您需要选择我在图片上显示的 SQL-Inserts-MultiRowSynthax【参考方案2】:

可以在此处找到更好的解决方案,该解决方案允许使用批处理而不是尝试一次插入数百万行:SQL Batch Multi-Line Insert

此解决方案还有许多其他可能有用的配置选项,但主要特点是它通过批量插入而不是一次全部插入来防止锁定表过长时间。

如何在 DataGrip 中安装脚本

    转到“数据提取器”下拉菜单。 (在结果栏中) 选择“转到脚本目录” 创建一个名为“SQL Batch Multi-Line Insert.sql.groovy”的新文件 粘贴并保存脚本 (可选)调整配置变量

【讨论】:

以上是关于如何通过 DataGrip 每 100 行创建一个 sql 插入语句的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 DataGrip 在本地创建 postgreSQL 数据库

Datagrip,创建自定义模板

将 .csv 文件导入 Datagrip?

如何设置 DataGrip 通过使用 DataGrip 的隧道以 SSL 模式连接 Cloud SQL

使用 DataGrip 创建模式如何备份和迁移

无法通过 DataGrip 应用程序连接到 MySQL docker 实例