11

我在尝试使用 BCP 将数据插入表时遇到问题。该表有一个标识列。我正在从文本文件中获取输入。请让我知道是否有任何好的解决方案。

问候, 查扬

4

3 回答 3

15

我需要做同样的事情,我的同事指出您可以使用 BCP 上的 -E 开关来执行此操作。

从文档...

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

工作一种享受,谢谢简!

于 2011-10-27T10:33:47.797 回答
8

你有两个选择,真的:

  • 不要插入 IDENTITY 列的值让 SQL Server 为您处理

  • 如果您不能或不想这样做,则需要在该表上打开 IDENTITY_INSERT,然后插入该值,然后再次将其关闭:

    SET IDENTITY_INSERT (table name) ON
    -- do your bcp import here
    SET IDENTITY_INSERT (table name) OFF
    

    使用此设置,您可以将自己的值插入 IDENTITY 列。

    如果这样做,您可能还需要在插入后重新设置标识列的种子,以避免在您的标识中出现任何潜在的重复:

    DBCC CHECKIDENT('table name', RESEED)
    
于 2010-07-05T06:50:17.193 回答
5

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

bcp mydb.dbo.myview in file.txt -S(local) -T -e err.log -c
于 2014-01-24T17:20:25.953 回答