Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何导入大型MS SQL.SQL文件?_Sql_Sql Server_Import - Fatal编程技术网

如何导入大型MS SQL.SQL文件?

如何导入大型MS SQL.SQL文件?,sql,sql-server,import,Sql,Sql Server,Import,我使用RedGate SQL数据比较并生成了一个.SQL文件,这样我就可以在本地机器上运行它了。但问题是该文件超过300mb,这意味着我无法进行复制和粘贴,因为剪贴板将无法处理该文件,当我尝试在SQL Server Management Studio中打开该文件时,我会遇到一个错误,即该文件太大 有没有办法运行一个大的.sql文件?该文件基本上包含两个新表的数据。使用osql在命令行中运行它,请参见此处: 使用osql在命令行中运行它,请参见此处: 从命令提示符启动sqlcmd: sqlcmd

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


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

使用osql在命令行中运行它,请参见此处:


使用osql在命令行中运行它,请参见此处:


从命令提示符启动
sqlcmd

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

在命令提示符下,启动
sqlcmd

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

你的问题和我的很相似

您可以将文件/脚本另存为.txt或.sql,并从SQLServerManagementStudio运行它(我认为菜单是Open/Query,然后在SSMS界面中运行查询)。您可能必须更新第一行,指示要在本地计算机上创建或选择的数据库

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


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

您可以将文件/脚本另存为.txt或.sql,并从SQLServerManagementStudio运行它(我认为菜单是Open/Query,然后在SSMS界面中运行查询)。您可能必须更新第一行,指示要在本地计算机上创建或选择的数据库

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

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

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

然后,如果两台服务器位于同一网络上,您可能会发现只使用DTS(或SSI,如果这是SQL Server 2005)来传输数据更简单

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

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

然后,如果两台服务器位于同一网络上,您可能会发现只使用DTS(或SSI,如果这是SQL Server 2005)来传输数据更简单


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

我遇到了完全相同的问题,经过一段时间的努力,终于找到了解决方案,将
-a
参数设置为
sqlcmd
,以更改其默认数据包大小:

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

我遇到了完全相同的问题,经过一段时间的努力,终于找到了解决方案,将
-a
参数设置为
sqlcmd
,以更改其默认数据包大小:

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

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


您也可以使用此工具。它真的很有用

  • 以管理员权限获取命令提示符

  • 将目录更改为.sql文件的存储位置

  • 执行以下命令

    sqlcmd-S'your server name'-U'服务器用户名'-p'服务器密码'-d'db name'-i script.sql

  • 以管理员权限获取命令提示符

  • 将目录更改为.sql文件的存储位置

  • 执行以下命令

    sqlcmd-S'your server name'-U'服务器用户名'-p'服务器密码'-d'db name'-i script.sql


  • 我使用的是MSSQL Express 2014,没有一个解决方案适合我。他们都刚刚崩溃了SQL。因为我只需要运行一个带有许多简单insert语句的一次性脚本,所以作为最后手段,我编写了一个小型控制台应用程序:

    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();
        }
    }
    

    我使用的是MSSQL Express 2014,没有一个解决方案适合我。他们都刚刚崩溃了SQL。因为我只需要运行一个带有许多简单insert语句的一次性脚本,所以作为最后手段,我编写了一个小型控制台应用程序:

    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();
        }
    }
    

    希望这对您有所帮助

    sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
    
    sqlcmd-u用户名-s-iu:\\script.sql
    
    希望这对您有所帮助

    sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
    
    sqlcmd-u用户名-s-iu:\\script.sql
    
    我也有类似的问题。我的带有sql脚本的文件大小超过150MB(几乎有900k个非常简单的插入)。我使用了Takuro建议的解决方案(作为这个问题的答案),但我仍然收到一条错误消息,说内存不足(“资源池‘内部’中的系统内存不足,无法运行此查询”)

    帮助我的是,我在每50k次插入后都会使用GO命令

    (它并没有直接解决这个问题(文件大小),但我相信它解决了与sql脚本本身的大容量间接相关的问题