SQL Server - 运行大型脚本文件

时间:2008-10-21 16:07:36

标签: sql-server sql-scripts

我在开发服务器上有一个数据库表,在我使用包含140万行的CSV文件的导入例程设置它之后,该表已完全填充。

我在桌面上运行了数据库发布向导,现在我的本地计算机上有一个286MB的SQL脚本。问题是,我无法弄清楚如何运行它。如果我将其加载到SQL Server Management Studio Express中,我会收到一个警告窗口,显示“操作无法完成”。

关于如何运行此SQL脚本的任何想法?

6 个答案:

答案 0 :(得分:166)

使用sqlcmd工具执行文件..

sqlcmd -S myServer\instanceName -i C:\myScript.sql

如果您对包含多个INSERT的大型sql文件(> 100MB)有一个无法解释的“脚本错误”,只需在文件中将“INSERT INTO”替换为“GO INSERT INTO”,这将减少事务的大小。

答案 1 :(得分:17)

CodePlex上的这个工具(Big SQL Script File Runner)将运行带有日志和GUI的任何大小的脚本文件。

答案 2 :(得分:8)

加入Gulzar Nazim的回答: 如果仍然出现故障,请尝试使用选项-f指定SQL文件的codepage

sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001

我试图从SQLite导入.dump文件(默认为UTF-8),并且sqlcmd在遇到第一个特殊字符后仍然抛出错误。 -f 65001为我修好了。

答案 3 :(得分:1)

为什么不直接使用DTS导入CSV文件?

答案 4 :(得分:0)

是的,我们可以这样做,我尝试使用 BCP (大容量复制程序)方法来避免内存不足的问题。

注意:在SQLServer 2014中试用过

在BCP中,我们首先需要将Source DataBase数据导出到 bcp 文件(在本地目录文件夹中),然后需要将该 bcp 文件导入到Source DataBase < / p>

enter image description here

下面是步行蛋糕的步骤:

注意:

a)确保目标数据库中存在空表

b)确保C盘中存在Temp文件夹

1)使用以下命令创建名为 Export_Data.bat 的蝙蝠文件

bcp.exe [Source_DataBase_Name].[dbo].[TableName] OUT "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

暂停

2)运行该bat文件,结果将在Temp文件夹中生成一个bcp文件

3),然后使用以下命令创建另一个名为 Import_Data.bat 的蝙蝠文件

bcp.exe [Destination_DataBase_Name].[dbo].[TableName] IN "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

暂停

然后我们开始!

答案 5 :(得分:-8)

在单个事务中运行大型事务并不是一个好主意。因此,我建议将文件分解为更小,更易于管理的块。

另一个选择是查看直接导入CSV数据的其他一些方法。