如何在SQL Server上执行大型SQL文件?

问题描述:

我有大约50个T-SQL文件,其中一些是30MB,但其中一些是700MB。我以为手动执行它们,但是如果文件大于10MB,它会在SQL Server Management Studio中引发内存不足异常。如何在SQL Server上执行大型SQL文件?

任何想法?

+2

出于好奇的问题,是什么在那些700MB大SQL文件_is_? – edosoft 2010-05-05 20:18:34

+0

我也很好奇,虽然我看过INSERT(col1,col2)VALUES('col1 data','col2 data')的集合;线条很大。就像从不同的数据库系统或其他东西转换。 – 2010-05-05 20:28:00

+0

50个sql文件=美国国家,每行是一个业务的INSERT行。 – 2010-05-05 20:32:21

如果你有那么多的数据 - 不会是一个极大的方便,更加聪明,能在例如数据一个CSV文件,然后批量导入到SQL Server?

查看BULK INSERT命令 - 允许您快速有效地将大量数据加载到SQL Server中 - 比这样一个巨大的SQL文件好得多!

的命令看起来类似:

BULK INSERT dbo.YourTableName 
    FROM 'yourfilename.csv' 
    WITH (FIELDTERMINATOR =';', 
      ROWTERMINATOR =' |\n') 

或任何格式,您可能需要进口。

+1

当然,它是更高效和更好的策略,但有时您会得到一个SQL语句文件。如果你在DBMS之间传递数据,它可能是最便携的。所以,你可以展示一些令人印象深刻的正则表达式并将其转化为一个csv文件,或者处理你已有的东西。 – 2010-05-07 22:56:35

您可以尝试sqlcmd命令行工具,它可能有不同的内存限制。 http://msdn.microsoft.com/en-us/library/ms162773.aspx

用例:

sqlcmd -U userName -P myPassword -S MYPCNAME\SQLEXPRESS -i myCommands.tsql 

也许这太明显了,但是......您是否考虑编写一个程序来循环遍历这些文件并针对每一行调用SqlCommand.ExecuteNonQuery()?这几乎是微不足道的。

不太明显的优点:

  • 您可以监视饲料的进步(这是要花费一些时间)
  • 你可以阻止它(如果你不想淹没服务器)
  • 您可以加少许误差在办案中有输入文件
+0

+1,这可能需要很长时间,但除非OP可以编辑这些大文件以便批量加载它们,否则这很可能是唯一的解决方案。 – 2010-05-06 18:07:02