bcp 匯出與匯入

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

  1. FIX: 當您在 Microsoft SQL Server 2005 執行 BULK INSERT 陳述式錯誤訊息: " The 大量載入失敗。 資料行是針對 <n>, <n> 個資料行資料列將資料檔中的 " 太長
    http://support.microsoft.com/kb/942660/zh-tw
     
  2. PRB: SQL Server 連結到遠端資料庫失敗並 7399 錯誤
    http://support.microsoft.com/kb/241267/zh-tw
     
  3. 在 SQL Server 2005 使用 BULK INSERT 陳述式, 將在大量資料時, FIX: 您收到錯誤訊息
    http://support.microsoft.com/kb/935446/zh-tw