【问题标题】:SQL server bulk insert identity columnSQL Server 批量插入标识列
【发布时间】:2013-07-25 15:17:07
【问题描述】:

我正在尝试批量插入具有标识列的表中。但我的主机文件包含标识列的空值。当我发出“bcp”命令时,出现错误 -

开始复制...

SQLState = S1000,NativeError = 0

错误 = [Microsoft][SQL Server Native Client 10.0]意外的 EOF 在 BCP 数据文件中遇到

SQLState = 23000,NativeError = 515

错误 = [Microsoft][SQL Server Native Client 10.0][SQL Server]无法 将值 NULL 插入列 'UNIQUE_ID',表 'xx.dbo.yyy'; 列不允许空值。插入失败。

SQLState = 01000,NativeError = 3621

警告 = [Microsoft][SQL Server Native Client 10.0][SQL Server]The 语句已终止。

BCP 复制失败

如果我没有为标识列提供空值,那么我会收到一个错误 - 在 bcp 数据文件中遇到意外的 EOF。

请帮助将 bcp 工作批量插入到表中..

【问题讨论】:

  • 你能发表你的声明吗?有格式文件吗?
  • 我会将以上内容添加到您的问题中,您能显示示例数据吗?在您的 .txt 中有一个空的 id 字段并且不使用 KEEPIDENTITY 应该可以工作。
  • 是的。我的错误..我在不知不觉中使用了 KEEP IDENTITY..删除它之后,它可以工作。如果没有在数据文件中指定空 id 字段,是否有任何选项可以删除 id数据文件中的字段?
  • 如果您想删除必须先插入临时表的空 ID 字段,不要认为有其他选择。

标签: sql sql-server bulkinsert bcp


【解决方案1】:

虽然我建议您先将数据批量插入到某个临时表中,然后再将数据从临时表中插入到主表中。这样您就可以保留身份列。 下一种方法是在您的主机文件中添加一个额外的 id 列并将该列保持为空白,然后进行批量插入。另外请确认您是否在批量插入查询中未使用 KEEPIDENTITY 关键字。

【讨论】:

  • 我不发出命令 - KEEPIDENTIY..在我的主机文件中,我给 id 列提供了空值。如果我不给空值,那么它会抛出错误 - 意外的 EOF 文件
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多