日期:2014-05-19  浏览次数:20546 次

有自动编号字段的表导入数据时为什会报该字段不能为空值?
表结构
ID(int)     字段1(varchar)       字段2(varchar)


数据是电子表格共2列,导入时报ID该字段不能为空值,若在电子表格中增加ID列并填上相应数字则能导入数据,不知何故?ID字段数据类型:int,标识:是,标识种子:1,标识递增量:1。

------解决方案--------------------
叫你一个笨方法 你先把id列删除 然后把数据导进去 再在表中添加id列 就可以了

------解决方案--------------------
用代码导入吧.手工写各个列,别导自增的那个列,那个列就会自动补值了.

当然,最好你先把电子表格的二列导进来.存成一个表,
然后再写代码导这个表

------解决方案--------------------
SET IDENTITY_INSERT ON

insert语句....

SET IDENTITY_INSERT OFF

参考:http://hi.baidu.com/ruicao/blog/item/35c7b7186c06430734fa4175.html



------解决方案--------------------
自动增长的ID是不能进行强行插入的
------解决方案--------------------
use 数据库名称
SET IDENTITY_INSERT 数据库名称.dbo.表名 ON
GO
insert 数据库名称.dbo.表名(
master_id,master_caseId,master_site
)
select
master_id,master_caseId,master_site
from 另一个数据库.dbo.表名
GO
SET IDENTITY_INSERT 数据库名称.dbo.表名 off
GO

--说明 master_id 是自增长列
------解决方案--------------------
insert 数据库名称.dbo.表名(
master_id,master_caseId,master_site
)
select
master_id,master_caseId,master_site
from 另一个数据库.dbo.表名
---------------
master_id是自增列的话,这样改了一下,你看行不行
insert 数据库名称.dbo.表名(
master_caseId,master_site
)
select
master_caseId,master_site
from 另一个数据库.dbo.表名
也就是说,不插入那个自增列,我以前就是这样用的呀.
------解决方案--------------------
insert tb(col.....)
select col....
from tb2 where ....