目前我正在使用SQLCMD Utility将CSV数据加载到SQL Server。下面是我在命令提示符下执行的命令,用于加载数据:
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 实用程序中生成错误的文件一样?
答案 0 :(得分:2)
我认为您所寻找的选项不是在sqlcmd中,而是在BULK INSERT
中:
ERRORFILE =' file_name'
指定用于收集具有格式错误且无法转换为OLE DB行集的行的文件。这些行将从数据文件"原样复制到此错误文件中。"