日期:2014-05-17  浏览次数:20467 次

数据库数据导入导出问题主键ID问题
我要把数据库A的数据导入到一个空的数据库B。
我先导出A的脚本,在数据库B中执行,然后把A的数据导入到B,为什么数据库表ID都是从1开始的啊,和A库的表不一样

------解决方案--------------------
ID你设置的是自增的字段。如果要导出自增ID需要在导出向导里选择表后,选择编辑映射,然后勾选上启用标识插入才可以。
------解决方案--------------------
SQL code

肯定不一样啊?你的identity,种子默认是从1开始的。所有。。。
如果两个数据库子一个机器上你可尝试是使用:
insert into B.table select * from A.table(记得取消B.talbe的自增长属性)

------解决方案--------------------
把所有有自增列的目标表的这个属性打开,再导入。
SET IDENTITY_INSERT 表名 ON
完事后然后再把它关上
SET IDENTITY_INSERT 表名 OFF

------解决方案--------------------
我之前也试过,尝试了一下把另一台机器上的一个数据库导入到本地

首先,把远程机器上数据库的定义语句都导出来,注意这里倒出来的定义语句包含了2个部分,第一个是表的定义语句,第二是这个表可能会引用其他表,也就是表和表之间有主外键的关系,所以只能运行那部分表定义的语句,而不能运行那部分定义表与表之间关系的语句。

然后,写了一个动态的语句,可以生成类似这样的语句:

set identity_insert dbo.表名 on

insert into 目标库.dbo.表名
select *
from 源库.dbo.表名

set identity_insert dbo.表名 off


这样的语句生成后,自动执行,就能批量导入数据了,只是因为表中的数据量比较大(上千万条),所以速度比较慢。如果只是需要原来的数据库,还不如直接备份数据库,还原到本地,这样可能更好一些。