如何导入一个大的MS SQL .sql文件?

我使用RedGate SQL数据比较并生成一个.sql文件,所以我可以在我的本地机器上运行它。 但问题是,该文件超过300MB,这意味着我不能复制和粘贴,因为剪贴板将无法处理它,当我尝试在SQL Server Management Studio中打开文件时,我得到一个错误关于文件太大。

有没有办法运行一个大的.sql文件? 该文件基本上包含两个新表的数据。

在命令提示符下,启动sqlcmd

 sqlcmd -S <server> -i C:\<your file here>.sql 

只需用你的脚本的名字replace<server>和你的SQL框的位置, <your file here> 。 不要忘记,如果你正在使用一个SQL实例,语法是:

 sqlcmd -S <server>\instance. 

以下是您可以传递给sqlcmd的所有参数列表:

 Sqlcmd [-U login id] [-P password] [-S server] [-H hostname] [-E trusted connection] [-d use database name] [-l login timeout] [-t query timeout] [-h headers] [-s colseparator] [-w screen width] [-a packetsize] [-e echo input] [-I Enable Quoted Identifiers] [-c cmdend] [-L[c] list servers[clean output]] [-q "cmdline query"] [-Q "cmdline query" and exit] [-m errorlevel] [-V severitylevel] [-W remove trailing spaces] [-u unicode output] [-r[0|1] msgs to stderr] [-i inputfile] [-o outputfile] [-z new password] [-f | i:[,o:]] [-Z new password and exit] [-k[1|2] remove[replace] control characters] [-y variable length type display width] [-Y fixed length type display width] [-p[1] print statistics[colon format]] [-R use client regional setting] [-b On error batch abort] [-v var = "value"...] [-A dedicated admin connection] [-X[1] disable commands, startup script, environment variables [and exit]] [-x disable variable substitution] [-? show syntax summary] 

我有完全相同的问题,并一直苦苦挣扎了一会儿,终于find了解决scheme,即设置-a参数到sqlcmd为了改变它的默认数据包大小:

 sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767 

你也可以使用这个工具。 这真的很有用。

BigSqlRunner

  1. 以pipe理员权限执行命令提示符
  2. 将目录更改为.sql文件存储的位置
  3. 执行以下命令

    sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql

我正在使用MSSQL Express 2014,没有解决scheme为我工作。 他们都只是崩溃的SQL。 因为我只需要用许多简单的插入语句来运行一次性脚本 ,所以我通过编写一个小小的控制台应用程序来解决这个问题:

 class Program { static void Main(string[] args) { RunScript(); } private static void RunScript() { My_DataEntities db = new My_DataEntities(); string line; System.IO.StreamReader file = new System.IO.StreamReader("c:\\ukpostcodesmssql.sql"); while ((line = file.ReadLine()) != null) { db.Database.ExecuteSqlCommand(line); } file.Close(); } } 

你的问题和这个很相似

你可以保存你的文件/脚本为.txt或.sql,并从Sql Server Management Studio运行(我认为菜单是打开/查询,然后在SSMS接口运行查询)。 您必须更新第一行,指示要在本地机器上创build或select的数据库。

如果你必须经常进行这种数据传输,那么你可以去复制。 根据您的需要,快照复制可以。 如果您必须在两台服务器之间同步数据,则可以使用更复杂的模型,如合并复制。

编辑:我没有注意到你有SSMS链接到文件大小的问题。 然后你可以按照他人的build议,进行命令行快照复制(在主服务器上发布,在本地订阅,复制,然后取消订阅),甚至备份/恢复

该文件基本上包含两个新表的数据。

然后,如果两台服务器位于同一networking上,那么您可能会发现DTS(或SSIS,如果这是SQL Server 2005+)的数据更简单。

如果两台服务器不在同一个networking上,则可以备份源数据库并将其还原到目标服务器上的新数据库。 然后,您可以使用DTS / SSIS,甚至是简单的INSERT INTO SELECT将两个表传输到目标数据库。

希望这对你有所帮助!

 sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql