You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BCP导入数据时保留Identity列的原有值?

如何用BCP导入数据时保留Identity列的值?

要让BCP导入时保留id列(Identity列)的原始值,你需要完成两个关键操作:开启表的Identity插入权限,同时修改BCP命令添加对应参数,具体步骤如下:

  • 第一步:开启Identity插入权限
    SQL Server默认会阻止手动向Identity列插入值,所以在导入前,你需要先在SQL Server中执行这条命令,允许目标表接受自定义的Identity值:

    SET IDENTITY_INSERT framework.att.attendance ON;
    

    注意:同一时间,SQL Server只允许一个表开启IDENTITY_INSERT,如果其他表也开启了这个设置,记得先关闭再操作当前表。

  • 第二步:修改BCP导入命令
    在你原来的BCP命令基础上,添加-E参数——这个参数的作用就是告诉BCP:"不要自动生成Identity值,直接用源文件里的原始值"。修改后的完整命令是:

    BCP framework.att.attendance in "D:\test\mhd.txt" -T -c -E
    
  • 第三步:导入完成后关闭权限
    导入成功后,一定要关闭IDENTITY_INSERT,这样后续对这个表的正常插入操作才能自动生成Identity值:

    SET IDENTITY_INSERT framework.att.attendance OFF;
    

额外注意事项

  • 确保你的源文件mhd.txt里的id值没有和目标表中已存在的Identity值重复,否则导入会触发主键/唯一约束报错;
  • 如果源文件的列顺序和目标表的列顺序不一致,你可能还需要用-f参数指定格式文件,确保列映射正确,否则Identity值可能会被导入到错误的列中。

内容的提问来源于stack exchange,提问作者Mohammad Naghsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:52:02