日期:2014-05-18  浏览次数:20471 次

关于数据导入后,ID自动增长问题。
因为我设计的数据库表,里面的主键都是ID,且都是自动增长的,
我在程序中把数据导出后,再导入到新的机器里面,(环境全部部署好,数据库里面是空的数据,是从我们的数据库里面把数据全部手动删除了之后,把文件拷贝出来再附加到新机器里面的。)

例如,这个xls文件里面的数据是我需要的,框框里面是需要的ID


但是,我用BCP导入数据之后
变成了



这个ID 变了,导致视图里面都没数据了,
数据全部都导入成功!请问该怎么解决这个问题呢?



------解决方案--------------------
导入前,把id字段改为复制模式
------解决方案--------------------
不要直接导入到你的表中

先创建一个新表,把数据导入进去,然后在insert 

SQL code
SET IDENTITY_INSERT tb ON--这样可以把显式值插入表的标识列中。
INSERT INTO.....
SET IDENTITY_INSERT tb OFF--完成之后关闭选项

------解决方案--------------------
其实下面的也可以
SET IDENTITY_INSERT tb ON--这样可以把显式值插入表的标识列中。
--bcp
SET IDENTITY_INSERT tb OFF--完成之后关闭选项

不过我一般会选择导入到一个临时表,检测数据没问题(如字段长度之类的),在insert 这样不容易出错

------解决方案--------------------
SQL code
SET IDENTITY_INSERT tb on
bcp代码
SET IDENTITY_INSERT tb off

------解决方案--------------------
可以在导入前,把你的表中主键的自增属性去掉,然后再导入,导入成功后,再把主键设为自增。我以前遇到类似的问题就是这样解决的。