2014-03-14 33 views
2

我有一個包含120萬Insert命令.sql文件,
當我通過打開SQL Server管理執行它說如何插入具有.sql文件120萬INSERT命令

Insufficient memory to continue the execution of program 

我想直接執行命令提示符但面臨問題嘗試此sqlcmd -d database Name -i fileName.sql

請幫助。

+1

這個問題可能是單transacion。嘗試分割1000個插入並提交每個插入的1000個。 – StanislavL

+0

您是否有1.2m插入單筆交易? –

+0

是的,這是單筆交易。 –

回答

2

我的建議是

  1. 要首先導入該文件在數據庫
  2. 運行每個語句作爲動態SQL語句

對於第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

最後一次插入語句是在一個表中,用循環和BEGIN TRANSACTION聲明COMMIT執行INSERT語句表。

您需要使用動態sql在EXECsp_executesql的幫助下執行您的語句。以下鏈接將引導你一樣。

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

希望這有助於

+0

基於在問題中使用'sqlcmd'語句,「filename.sql」文件似乎包含實際的SQL語句,而不是數據。 –

+0

@Jon Egerton我正要到那個地步。請看我更新的答案。對不起,如果我誤導了幾個。 :) – samar

+0

BULK INSERT [的databaseName] [表名] FROM '文件路徑\ filename.sql' WITH ( ROWTERMINATOR = '\ n' )它說無效對象名 'databaseName.tableName' –

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" 

試試上面的命令之前,需要上傳的服務器或本地計算機文件,命令,從本地唯一的服務器沒有外部路徑

對於來自MSSQL導入接受文件。SQL文件

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 
    ) 
+0

我thik mysql是「MySQL」命令不適用於MSSQL,請指導, –

+1

是的,我的第一個答案是針對MySQL,剛纔我已更新爲MsSQL ....如果您使用MSSQL ...比嘗試sqlcmd -S 。\ SQLEXPRESS -E -i「C:\ path \ file.sql」 –

+0

@Programmer - >我試過第二個命令「C:\> sqlcmd -S。\ MSSQL -U username - P password -i C:\ 2.sql -o C:\ abc.txt「錯誤是**共享內存提供程序:沒有進程位於管道的另一端**。 通信鏈路故障 –