bcp in 时,如果表中含有IDENTITY 列,默认情况下,bcp会忽略该列的数据,重新生成该列数据。导致导入后的数据和导入前的不一致。
查的在bcp命令后加入如下参数解决该问题。
官方文档说明如下:
- E
显式指定表的 IDENTITY 列的值。
缺省情况下,在向包含 IDENTITY 列的表中批量复制数据时,bcp 将为每行指派一个临时的 IDENTITY 列值 0。这仅在向表中复制数据时有效。bcp 从数据文件中读取 ID 列的值,但是不将值发送给服务器。
相反,在 bcp 向表中插入每一行时,服务器为每行指定一个唯一的、连续的 IDENTITY 列值,起始值为 1。如果向表中复制数据时指定了 - E 标志,bcp 将从数据文件中读取列值,并将该值发送给向表中插入该值的服务器。如果插入的行数超过了 IDENTITY 列可能的最大值,Adaptive Server 将返回一个错误。
将数据批量复制出来时,-E 参数不起作用。Adaptive Server 会将 ID 列复制到数据文件,除非您使用 -N 参数。
不能同时使用 -E 和 -g 标志。
BCP & IDENTITY
最新推荐文章于 2022-07-22 14:40:56 发布