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

时间:2010-05-05 20:10:11

标签: sql sql-server tsql

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

有什么想法吗?

3 个答案:

答案 0 :(得分:12)

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

用法示例:

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

答案 1 :(得分:5)

如果您拥有那么多数据 - 将数据放在例如数据中会不会更容易和更智能一个CSV文件,然后批量导入到SQL Server?

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

该命令类似于:

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

或您可能需要导入的任何格式。

答案 2 :(得分:3)

也许这太明显了,但是......你考虑编写一个循环文件​​的程序并为每一行调用SqlCommand.ExecuteNonQuery()吗?这几乎是微不足道的。

不太明显的优势:

  • 您可以监控Feed的进度(这需要一段时间)
  • 您可以限制它(如果您不想淹没服务器)
  • 如果输入文件中存在问题,您可以添加一些错误处理