插入标识列的BCP格式是什么

时间:2010-07-05 06:02:04

标签: bcp

我在尝试使用BCP向表中插入数据时遇到问题。该表有一个标识列。我正在从文本文件中获取输入。如果有任何好的解决方案,请告诉我。

此致 茶烟

3 个答案:

答案 0 :(得分:10)

我需要做同样的事情,我的同事指出你可以使用BCP上的-E开关来做到这一点。

来自文档...

“ - E指定导入数据文件中的标识值将用于标识列。如果未给出-E,则忽略正在导入的数据文件中此列的标识值。”< / p>

谢谢Jan!

答案 1 :(得分:7)

你有两个选择:

  • 执行插入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 :(得分:4)

创建不包含标识列的视图也很有用,不需要格式文件:

bcp mydb.dbo.myview in file.txt -S(local) -T -e err.log -c