插入标识列的 BCP 格式是啥
Posted
技术标签:
【中文标题】插入标识列的 BCP 格式是啥【英文标题】:What will be BCP format for inserting a identity column插入标识列的 BCP 格式是什么 【发布时间】:2011-03-11 18:49:07 【问题描述】:我在尝试使用 BCP 将数据插入表时遇到问题。该表有一个标识列。我正在从文本文件中获取输入。如果有什么好的解决方案,请告诉我。
问候, 茶岩
【问题讨论】:
【参考方案1】:你有两个选择,真的:
不插入 IDENTITY 列的值,让 SQL Server 为您处理
如果您不能或不想这样做,则需要在该表上打开 IDENTITY_INSERT,然后插入值,然后再次将其关闭:
SET IDENTITY_INSERT (table name) ON
-- do your bcp import here
SET IDENTITY_INSERT (table name) OFF
使用此设置,您可以将自己的值插入 IDENTITY 列。
如果您这样做,您可能还需要在插入后重新设置标识列的种子,以避免您的 IDENTITY 中出现任何潜在的重复:
DBCC CHECKIDENT('table name', RESEED)
【讨论】:
【参考方案2】:我需要做同样的事情,我的同事指出您可以使用 BCP 上的 -E 开关来执行此操作。
来自文档...
"-E 指定将导入数据文件中的一个或多个标识值用于标识列。如果未给出-E,则忽略正在导入的数据文件中该列的标识值。"
工作愉快,谢谢 Jan!
【讨论】:
【参考方案3】:创建一个不包括标识列的视图也很有用,不需要格式文件:
bcp mydb.dbo.myview in file.txt -S(local) -T -e err.log -c
【讨论】:
以上是关于插入标识列的 BCP 格式是啥的主要内容,如果未能解决你的问题,请参考以下文章