SQLCMD实用程序生成被拒绝的行到平面文件
问题描述:
当前我正在使用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工具来生成坏文件?
答
我认为你正在寻找的选项是不是在sqlcmd中,但在BULK INSERT
:
错误文件=“FILE_NAME”
指定用于收集有格式错误行的文件,不能转换为OLE DB行集。这些行被“按原样”从数据文件复制到此错误文件中。
谢谢etsa,你能帮助我如何在批量插入中添加“ERRORFILE”语法。请用上面的sql脚本来说明。谢谢 –
尝试使用MS文档,如果您有任何问题,请在您的问题中发布新脚本。 – etsa
在sql脚本文件中添加ERRORFILE ='file_name'后,将在另一个平面文件中创建错误记录。它现在解决了! –