gpt4 book ai didi

SQL BCP 无法为标识列插入值

转载 作者:行者123 更新时间:2023-12-03 22:42:41 28 4
gpt4 key购买 nike

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

Error = [Microsoft][SQL Server Native Client 11.0] Invalid date format



第二列是日期时间。当我使用 -E标志(正如许多人所建议的那样),我收到错误消息

Error = [Microsoft][SQL Server Native Client 11.0] Invalid character value for cast specification



当我没有身份列时,一切正常。我不确定这里缺少什么。

这是一个再现:
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

测试数据(testTempTable.txt - TAB 分隔):
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]从 table 和 run 列,一切正常。

我究竟做错了什么?

编辑:
表没有标识列时分配的值

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

最佳答案

问题是您试图将第一列(日期)添加到 INT 列中。

你有三个选择...

  • 将一个 INT 列作为第一行添加到源数据中,并使其递增,就像 IDENTITY 将递增并继续传递 -E 选项。这样做将允许将源中的数据用作 IDENTITY 列。
  • 将随机 INT 添加到源数据的第一列,例如每行 1,然后是 不要传入-E。根据文档,当未提供 -E 时,它将忽略标识列的值并从当前种子值和自动增量开始。
  • 利用格式文件指定数据文件中的哪些列进入我们的 SQL 表中的哪些列。

  • How to specify the format file

    How to construct a format file

    祝你好运!

    关于SQL BCP 无法为标识列插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52375452/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com