2017-09-14 46 views
0

當前我正在使用SQLCMD實用程序將CSV數據加載到SQL Server。下面是這是在命令提示符下執行加載數據我的命令:SQLCMD實用程序生成被拒絕的行到平面文件

sqlcmd -Usa -Pxxx -S192.168.1.223,49546 -dlocal -i"/test.sql" -o"/test.log" 

我還抄我test.sql文件內容,供大家參考:

SET NOCOUNT ON 
BULK INSERT test FROM 
"\\192.168.1.223\test.csv" 
WITH 
(
MAXERRORS = 1000000, 
CODEPAGE = 1251, 
FIELDTERMINATOR = '~%', 
ROWTERMINATOR = '0x0a' 
) 
GO 
SELECT CONVERT(varchar,@@ROWCOUNT) + ' rows affected' 
GO 

插入操作工作正常,上述處理。但我擔心的是,如果由於數據類型或數據長度而導致任何錯誤,該行將被拒絕,並且我無法跟蹤特定的行。

每次我必須查看被拒絕的行號和數據文件的日誌文件來檢查相應的行。

是否有任何選項來生成錯誤/拒絕一行到另一個文件中,像我們在ORACLE - SQLPLUS工具來生成文件?

回答

2

我認爲你正在尋找的選項是不是在sqlcmd中,但在BULK INSERT

錯誤文件=「FILE_NAME」

指定用於收集有格式錯誤行的文件,不能轉換爲OLE DB行集。這些行被「按原樣」從數據文件複製到此錯誤文件中。

+0

謝謝etsa,你能幫助我如何在批量插入中添加「ERRORFILE」語法。請用上面的sql腳本來說明。謝謝 –

+0

嘗試使用MS文檔,如果您有任何問題,請在您的問題中發佈新腳本。 – etsa

+0

在sql腳本文件中添加ERRORFILE ='file_name'後,將在另一個平面文件中創建錯誤記錄。它現在解決了! –