【问题标题】:mass insert individual line SQL批量插入单行 SQL
【发布时间】:2018-06-19 13:36:07
【问题描述】:

这是我的问题, 我收到了一个大约 900k 行的文本文件,看起来像这样。

INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)

当我在 SQL Server 中运行它时,出现内存不足错误。 除了复制/粘贴/评论之外,有没有办法将其拆分成批量 这将阻止服务器不执行此操作并防止由于在选择/复制/过去/评论过程中选择不当而丢失数据,这也将永远持续!

【问题讨论】:

  • 您是否有权访问编写此数据脚本的原始表?
  • 我无权访问原始表。
  • 使用命令行sql客户端怎么样?
  • “当我在 SQL Server 中运行它时,出现内存不足错误。” - 我很确定你不会。我很确定您在尝试在 SSMS 中运行它时会遇到 OOM,而 OOM 是 SSMS 错误。为什么不使用 sqlcmd 从命令行运行呢?

标签: sql sql-server


【解决方案1】:

如果您的意图是一遍又一遍地插入相同的数据,您可以使用WHILE 循环它。如果您使用有意义的数据,您可以尝试BULK INSERT 与 excel 文件。

【讨论】:

  • 否每一行的数据都不一样。
  • 尝试将其添加到excel文件中并批量插入。我想这会节省很多时间。
【解决方案2】:

提交一次/每 5 次插入

看起来像:

INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
INSERT INTO TABLE_A VALUES (VAL1, Val2, val3)
commit;

如果它也抛出内存异常那么

你能提供如何运行它吗?例如..use sql server manager studio to run sql script?

【讨论】:

    【解决方案3】:

    使用 Word 对文本文件执行查找和替换,将 ) 的所有实例替换为 )^lGO^l 保存并运行新的文本文件将单独提交每个 INSERT 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 2016-01-31
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多