插入 1.99 亿行数据的最有效方法是什么?

Vip*_*_Sb 6 sql-server-2005

我有一个 2.2 GB 的文本文件,格式为:

1234567890
1234567890
etc.......
Run Code Online (Sandbox Code Playgroud)

我需要将每一行插入一个表(字段 1),例如:

CREATE TABLE [dbo].[table](
    [field1] [varchar](10) NOT NULL,
    [field2] [varchar](3) NOT NULL
Run Code Online (Sandbox Code Playgroud)

插入此数据的最有效方法是什么?
有没有可以使用的预制程序?(即可以从外部从命令行完成)

我创建了一个脚本,我选择了 1,000 条记录,围绕它们创建了一个 sql 查询,然后插入。这需要一段时间,有没有更好的方法?(更好的是更容易,更快,更少的开销)

注意:我已经尝试了 1M、100,000、10,000 个批量大小,但是这些大小的查询很长,所以我现在只使用 1k。

(使用查询)

INSERT INTO table (field1, field2)
SELECT '1234567890','123'
UNION ALL
SELECT '1234567890','123'
UNION ALL
SELECT '1234567890','123'
// etc....
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 10

BCP可能是完成这项任务的最佳工具。SQLFool 有一篇关于其用法的很好的BCP 基础文章

@Marian 发布了一份BCP 优化参考的完整列表,以回应我提出的一个问题,您可能会发现这些问题很有用。


gar*_*rik 5

使用BULK INSERT并从目标表中删除约束。