我有一個包含120萬Insert命令.sql文件,
當我通過打開SQL Server管理執行它說如何插入具有.sql文件120萬INSERT命令
Insufficient memory to continue the execution of program
我想直接執行命令提示符但面臨問題嘗試此sqlcmd -d database Name -i fileName.sql
請幫助。
我有一個包含120萬Insert命令.sql文件,
當我通過打開SQL Server管理執行它說如何插入具有.sql文件120萬INSERT命令
Insufficient memory to continue the execution of program
我想直接執行命令提示符但面臨問題嘗試此sqlcmd -d database Name -i fileName.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在EXEC
或sp_executesql
的幫助下執行您的語句。以下鏈接將引導你一樣。
http://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/
希望這有助於
基於在問題中使用'sqlcmd'語句,「filename.sql」文件似乎包含實際的SQL語句,而不是數據。 –
@Jon Egerton我正要到那個地步。請看我更新的答案。對不起,如果我誤導了幾個。 :) – samar
BULK INSERT [的databaseName] [表名] FROM '文件路徑\ filename.sql' WITH ( ROWTERMINATOR = '\ n' )它說無效對象名 'databaseName.tableName' –
對於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
)
我thik mysql是「MySQL」命令不適用於MSSQL,請指導, –
是的,我的第一個答案是針對MySQL,剛纔我已更新爲MsSQL ....如果您使用MSSQL ...比嘗試sqlcmd -S 。\ SQLEXPRESS -E -i「C:\ path \ file.sql」 –
@Programmer - >我試過第二個命令「C:\> sqlcmd -S。\ MSSQL -U username - P password -i C:\ 2.sql -o C:\ abc.txt「錯誤是**共享內存提供程序:沒有進程位於管道的另一端**。 通信鏈路故障 –
這個問題可能是單transacion。嘗試分割1000個插入並提交每個插入的1000個。 – StanislavL
您是否有1.2m插入單筆交易? –
是的,這是單筆交易。 –