bcp 匯出與匯入
參考:bcp 公用程式
上一篇文章【bcp 備份所有資料表】介紹利用 bcp 批次會出資料表,這次介紹利用 bcp 匯入資料的動作。
使用 bcp 匯出:
1: DECLARE @cmd varchar( 2000 )
2: SELECT @cmd = 'bcp SchemaName.DBName.[TableName] out "c:\tablename.txt" -c -T -t "," -r "\n"'
3: EXEC master..xp_cmdshell @cmd
out [filename] 表示要匯出至某個檔案
-t "," 表示使用 , 來當分隔符號 (預設使用 Tab \t 來當分隔符號)
使用 bcp 匯入:
1: DECLARE @cmd varchar( 2000 )
2: SELECT @cmd = 'bcp SchemaName.DBName.[TableName] in "c:\tablename.txt" -c -T -t "," -r "\n"'
3: EXEC master..xp_cmdshell @cmd
其實就是把 bcp 指令中的 out 改為 in,就表示從檔案將資料匯入資料表。
或是使用 BULK INSERT 指令也可以進行大量匯入的動作:
1: BULK INSERT SchemaName.DBName.[TableName]
2: FROM 'c:\tablename.txt'
3: WITH (
4: BATCHSIZE = 1000,
5: FIELDTERMINATOR = ',',
6: ROWTERMINATOR = '\n',
7: TABLOCK
8: )
另參考: BULK INSERT Performance by Jeffrey
可能發生錯誤處理 by LOLOTA :
- FIX: 當您在 Microsoft SQL Server 2005 執行 BULK INSERT 陳述式錯誤訊息: " The 大量載入失敗。 資料行是針對 <n>, <n> 個資料行資料列將資料檔中的 " 太長
http://support.microsoft.com/kb/942660/zh-tw
- PRB: SQL Server 連結到遠端資料庫失敗並 7399 錯誤
http://support.microsoft.com/kb/241267/zh-tw
- 在 SQL Server 2005 使用 BULK INSERT 陳述式, 將在大量資料時, FIX: 您收到錯誤訊息
http://support.microsoft.com/kb/935446/zh-tw