我在开发服务器上有一个数据库表,现在已经完全填充了,因为我使用CSV文件进行导入,包含了1.4百万行。
我在该表上运行了数据库发布向导,现在我在本地机器上有一个286MB的SQL脚本。问题是,我不知道如何运行它。如果我将其加载到SQL Server Management Studio Express中,我会收到一个警告窗口,显示“操作无法完成”。
你有什么想法可以让我运行这个SQL脚本吗?
我在开发服务器上有一个数据库表,现在已经完全填充了,因为我使用CSV文件进行导入,包含了1.4百万行。
我在该表上运行了数据库发布向导,现在我在本地机器上有一个286MB的SQL脚本。问题是,我不知道如何运行它。如果我将其加载到SQL Server Management Studio Express中,我会收到一个警告窗口,显示“操作无法完成”。
你有什么想法可以让我运行这个SQL脚本吗?
使用sqlcmd工具来执行文件。
sqlcmd -S myServer\instanceName -i C:\myScript.sql
如果您在处理大于100MB的包含多个INSERT语句的SQL文件时,遇到了“脚本错误”,只需在文件中将 "INSERT INTO" 替换为 "GO INSERT INTO" 即可缩小事务大小。
-f
指定SQL文件的代码页:
sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001
我尝试导入一个来自SQLite(默认为UTF-8)的.dump文件时,sqlcmd在遇到第一个特殊字符后就会抛出错误。-f 65001
对我有帮助。
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) 运行该批处理文件,结果会在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
暂停
出发啦!
为什么不直接使用DTS导入CSV文件呢?
在单个事务中运行如此大的内容并不是一个好主意。因此,我建议将文件分成更小、更易管理的块。
另一个选择是查看一些其他直接导入CSV数据的方法。