如何在.sql文件中插入120万个插入命令

时间:2014-03-14 08:50:47

标签: sql sql-server sql-server-2008

我有.sql文件,其中包含1200000插入命令。,
当我在SQL SERVER MANAGEMENT中打开它时,它说

Insufficient memory to continue the execution of program

我正在考虑直接执行命令提示符,但面对问题尝试了此sqlcmd -d database Name -i fileName.sql

请帮助。

2 个答案:

答案 0 :(得分:2)

我的建议是

  1. 首先导入数据库中的文件
  2. 将每个语句作为动态sql语句运行
  3. 第1步

    您可以尝试bulk insert,如下所示

    BULK INSERT dbo.temp 
    FROM 'c:\temp\file.txt'
    WITH 
    (
        ROWTERMINATOR ='\n'
    )
    

    您也可以使用OPENROWSET之类的

    SELECT BulkColumn FROM OPENROWSET (BULK 'c:\temp\mytxtfile.txt', SINGLE_CLOB) MyFile
    

    以下链接提供了更多详细信息

    http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/

    或者如果上述内容无效,您可以创建SSIS package并尝试将文件导入表格。

    第2步

    最后,一旦insert语句在表中,循环表以使用BEGIN TRANSACTIONCOMMIT语句执行insert语句。

    您需要在EXECsp_executesql的帮助下使用动态sql执行语句。以下链接将指导您。

    http://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/

    希望这有帮助

答案 1 :(得分:2)

对于MySQL

选项1:在ubuntu,linux和mac系统终端命令如下

$ mysql -uuser -p < /path/to/your/file.sql
OR
$ mysql -uuser -p -e "source /path/to/your/file.sql"

选项2:在Windows系统上尝试以下命令

C:\> mysql -uuser -p < H:/path/to/your/file.sql
OR
C:\> mysql -uuser -p -e "source H:/path/to/your/file.sql"

在尝试上述命令之前,需要在服务器或本地计算机上上传文件,命令只从本地服务器接受文件而不是外部路径

从.sql文件导入MsSQL

sqlcmd -S .\SQLEXPRESS -E -i "C:\path\file.sql"

导入.csv文件

BULK INSERT tablename
    FROM 'C:\CSVData\filename.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\ImportErrorRows.csv',
    TABLOCK
    )