喂,
我使用大容量插入从csv文件在数据库中插入记录。在某些文件中,我有一个字段,即type mismatch or invalid character,但除了这一行之外,它还插入了其他行。
示例:文件中插入了7334行(1行类型不匹配) -> 7333行。
这是SQL的正常行为还是问题所在。
发布于 2015-12-07 11:24:25
是的,这是尝试向要插入数据的字段插入不同(在大多数情况下)的数据类型时所期望的行为。对于实例,如果尝试向整数字段插入文本值,则会得到类型不匹配错误。
bigint列不允许插入类似于'00:12:2A:3F‘的值。首先,检查源数据,并验证该列是否实际具有'00:12:2A:3F‘的值。如果不是,这可能是我在下面的说明中解释的原因。如果源数据的值是准确的,则可能必须将列定义更改为适当的数据类型,如varchar()。
除非强制使用CHECK_CONSTRAINTS,否则Sqlserver将跳过错误记录并插入其他符合要求的记录。如果希望插入失败(例如类型错配),请在批量插入中使用CHECK_CONSTRAINTS,如下所示:
BULK INSERT DB.dbo.Test
FROM '.....'
WITH ( CHECK_CONSTRAINTS, .......)注意:需要记住的一件事是,数据本身并没有被字段分隔符污染。例如,如果您的字段由‘、’分隔符分隔,并且您的一个字段在数据中有一个逗号(像'comments‘这样的文本列可能在其中有逗号),则SQL server认为从那里开始一个新的列并中断该字段,导致另一个列被错误地对齐。这可能是你的类型错配的一个原因。
https://stackoverflow.com/questions/34131387
复制相似问题