代码之家  ›  专栏  ›  技术社区  ›  ProgSky

SQL BCP无法插入标识列的值

  •  2
  • ProgSky  · 技术社区  · 6 年前

    我正在使用 bcp utility 导入制表符分隔的文件。我的表有一个identity列,当我运行bcp命令时,得到的错误是

    错误=[Microsoft][SQL Server Native Client 11.0]无效的日期格式

    -E 标志(正如许多人所建议的那样),我得到的错误是

    错误=[Microsoft][SQL Server Native Client 11.0]转换规范的字符值无效

    这是一份复印件:

    CREATE TABLE [dbo].[test_temptable]
    (
        [ID] int NOT NULL IDENTITY PRIMARY KEY,
        [Date] [datetime] NULL,
        [Column2] [varchar](100) NULL,
        [Column3] [varchar](100) NULL,
    ) 
    ON [PRIMARY]
    GO
    

    测试数据(testtentable.txt-制表符分隔):

    15-Sep-18   TestColumn2 TestColumn3
    

    BCP命令。

    bcp "testDB.dbo.test_temptable" in  "c:\temp\test\testTempTable.txt" -c -t"\t" -T -S  "testSQlServer" -E -e c:\temp\test\error.csv
    

    当我放下枪的时候 [ID] 从表列运行,一切正常。

    我做错什么了?

    编辑:

    enter image description here

    有用的链接:

    https://docs.microsoft.com/en-us/sql/relational-databases/import-export/keep-identity-values-when-bulk-importing-data-sql-server?view=sql-server-2017

    What will be BCP format for inserting a identity column

    1 回复  |  直到 6 年前
        1
  •  3
  •   ammills01    6 年前

    问题是您正在尝试将第一列(即日期)添加到INT列中。

    你有三个选择。。。

    1. 将INT列作为第一行添加到源数据中,并使其递增,就像标识递增一样,并继续传递-E选项。这样做将允许源中的数据用作标识列。

    2. 不要

    3. 利用格式文件指定数据文件中的哪些列进入SQL表中的哪些列。

    How to specify the format file

    How to construct a format file

    祝你好运!