【发布时间】:2015-02-10 06:42:00
【问题描述】:
我正在尝试将记录插入到有大量数据的表中
文件说明:
Size : 65.0 MB
Records count : 10000
我的样本数据:
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
.......
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
INSERT INTO tbldata(col1,col2,col3)values(col1,col2,col3)
GO
.......
UPTO 10000 ROWS
错误:
Exception of type 'System.OutOfMemoryException' was thrown.(mscorlib)
我试过了: I verified this answer
在 SQL Server\Properties\Memory 下有一个“每个查询的最小内存”设置。您可以暂时提高此数字以帮助增加 GO 语句之间的记录数。在我的情况下,我将它提高到 5000(10000 导致系统内存不足错误,不好)所以我选择了 5000,经过几次测试后我发现我现在可以导入大约 20,000 行,所以我每 20,000 行放置一个 GO 语句(大约花了 10 分钟),我能够在一个查询中导入超过 200,000 行。
【问题讨论】:
-
如何插入行?您是否在 SQL Server Management Studio 中打开脚本?您是否通过代码插入行? System.OutOfMemoryException 是一个 CLR 异常,所以我猜你正在使用 SQL Server Management Studio,在这种情况下你应该尝试使用 sqlcmd 命令行工具。
-
我不知道 sqlcmd 命令行工具。你能把那个工具的链接发给我吗@Jesus Lopez。
-
@Dinesh alla,Google 是你的朋友
标签: sql sql-server sql-server-2008 insert bulkinsert