【发布时间】:2016-12-09 16:58:33
【问题描述】:
我目前正在使用 SQL Server 的本机 Bulk Insert 过程将多个表从文本文件加载到数据库中。
这一直运行良好,甚至可以优雅地处理截断、null 和格式错误。如果任何列太大,不应该为空,或者根据格式文件找到的列数不正确,则会跳过这些行并将其转发到错误文件。
然而,最近在我的一个文本文件中输入了一个重复的主键。这导致批量插入失败,没有行被转发到错误文件。
目前我的批量插入命令如下所示:
BULK INSERT table.table FROM 'data_file.txt' WITH(
BATCHSIZE = 100000,
CODEPAGE = 1252,
DATAFILETYPE = 'char',
FIRSTROW = 2,
KEEPNULLS,
MAXERRORS = 1000000000,
TABLOCK,
FORMATFILE = 'format_file.txt',
ERRORFILE = 'error_file.txt'
)
有没有办法使用批量插入来处理主键违规,就像处理其他错误一样?理想情况下,我希望将包含 PK 违规的行转发到同一个错误文件。
【问题讨论】:
标签: sql sql-server tsql bulkinsert