将巨大的SQL文件导入SQL Server

时间:2014-07-11 10:51:34

标签: sql sql-server import bigdata sqlcmd

我使用sqlcmd实用程序将7 GB大型SQL转储文件导入远程SQL Server。我使用的命令是:

sqlcmd -S IP address -U user -P password -t 0 -d database -i file.sql

大约20-30分钟后,服务器会定期回复:

  

Sqlcmd:错误:脚本错误。

有任何指示或建议吗?

2 个答案:

答案 0 :(得分:1)

我认为file.sql只是一堆INSERT语句。对于大量行,我建议使用BCP命令行实用程序。这将比单个INSERT语句执行快几个数量级。

您还可以使用T-SQL BULK INSERT命令批量插入数据。在这种情况下,文件路径需要可由数据库服务器访问(即UNC路径或复制到服务器上的驱动器)以及所需的权限。请参阅http://msdn.microsoft.com/en-us/library/ms188365.aspx

答案 1 :(得分:0)

为什么不使用SSIS。虽然我有一个DBA证书,但我总是尝试使用正确的工具。

以下是使用SSIS的一些原因。

1 - 使用仍然可以使用快速加载,批量复制。确保设置批量大小。

2 - 错误处理要好得多。

但是,如果您使用快速加载,则批量提交或被抛出。

如果您使用单个记录,则可以将每个错误行定向到单独的目标。

3 - 您可以在将源数据加载到目标之前对源数据执行转换。

简而言之,Extract Translate Load。

4 - SSIS喜欢记忆和缓冲。如果你想深入了解,请阅读Matt Mason或Brian Knight的一些文章。

最后但并非最不重要的一点是,如果作业未在目标服务器上运行且本地磁盘上的输入文件,则LAN / WAN始终会起作用。

如果你在一个好管道的同一个骨干上,事情就会很快。

总之,是的,你可以使用BCP。这对于快速工作来说非常棒。任何复杂的错误处理都应该通过SSIS完成。

祝你好运,