sql - 如何插入 .sql 文件中的 120 万条插入命令

标签 sql sql-server sql-server-2008

我有 .sql 文件,其中包含 1200000 个插入命令。
当我通过在 SQL SERVER MANAGEMENT 中打开执行时,它显示

Insufficient memory to continue the execution of program

我想直接执行命令提示符,但遇到问题尝试了这个sqlcmd -d database Name -i fileName.sql

请帮忙。

最佳答案

我的建议是

  1. 首先将文件导入数据库
  2. 将每个语句作为动态 SQL 语句运行

对于第 1 步

您可以尝试使用 bulk insert就像下面这样

BULK INSERT dbo.temp 
FROM 'c:\temp\file.txt'
WITH 
(
    ROWTERMINATOR ='\n'
)

您还可以使用OPENROWSET,例如

SELECT BulkColumn FROM OPENROWSET (BULK 'c:\temp\mytxtfile.txt', SINGLE_CLOB) MyFile

以下链接提供更多详细信息

http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/

或者,如果以上方法均不起作用,您可以创建一个 SSIS 包 并尝试将文件导入到表中。

第 2 步

最后,一旦插入语句进入表中,就循环该表以使用 BEGIN TRANSACTIONCOMMIT 语句执行插入语句。

您需要在 EXECsp_executesql 的帮助下使用动态 SQL 执行语句。以下链接将指导您进行相同的操作。

http://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/

希望这有帮助

关于sql - 如何插入 .sql 文件中的 120 万条插入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400107/

相关文章:

sql - SQL Server 中的文本/字符串分析

sql - 在SQL Server中并行执行3条SQL语句

sql - 如何防止数据库触发器递归?

PHP - 将数据从表传输到数据库中的另一个表

c# - 无法加载文件或程序集 'microsoft.sqlserver.batchparserclient'

mysql - := denote within the context of a placeholder 是什么意思

sql-server - 如果存在(选择 1...)与如果存在(选择 TOP 1 1...)

mysql - select * but group by 某列,只针对某列

sql-server - 通过减少生成的唯一查询计划来优化动态 SQL 存储过程

sql-server - SQL Server 复制本地订阅属性返回 "Cannot apply value ‘null’ 到属性 ServerInstance : Value cannot be null. "