首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

较复杂的应用实例:怎么将A数据库中的A表数据倒入到B数据库中的B表中

2013-02-25 
高分求教较复杂的应用实例:如何将A数据库中的A表数据倒入到B数据库中的B表中本帖最后由 xujie7194 于 2013

高分求教较复杂的应用实例:如何将A数据库中的A表数据倒入到B数据库中的B表中
本帖最后由 xujie7194 于 2013-02-03 14:02:22 编辑 如何将A数据库中的A表数据倒入到B数据库中的B表中?
1.有数据库DATABASE_A,账户名:abc 密码:123456 
表名TBL_A,有15个字段,只选取2个字段,分别是字段A_NUM(varchar50) 和字段A_IC_NUM(varchar 50)是IC卡的物理编号,存储的是10进制数.

TBL_A如下:
A_NUM           A_IC_NUM    
-------------------------------------
SQA-01        1971339278     
ABC-44        541264532    
dda-31        967251628
-------------------------------------
2.有数据库DATABASE_B,帐户名:CCC 密码: 123456
表名TBL_B,有10个字段,其中二个字段用来存储TBL_A中的数据,分别是字段B_NUM(VARCHAR50)和字段B_IC_NUM
(VARCHAR 8),另一个字段B_Logic_NUM(varchar10),每插入一条数据,该字段值就自增

最后,我想要的结果如下:
B_NUM     B_IC_NUM    B_Logic_NUM
SQA-01   7580400E     0001000001
ABC-44   20430A94     0001000002
dda-31    39A716AC     0001000003
[解决办法]
登陆(此账号需要同时拥有两个数据库的权限),然后
insert into B..B(B_NUM,B_IC_NUM)  select  A_NUM,A_IC_NUM from A..A
[解决办法]
在b服务器运行以下语句,其中SerNameA要替换成A服务器的电脑名或者ip

    EXEC master.dbo.sp_addlinkedserver @server='ServerA',@srvproduct='',@catalog='DATABASE_A',@provider='SQLOLEDB',@provstr=='DRIVER="SQL Server";Initial Catalog=DATABASE_A;SERVER=SerNameA;UID=abc;PWD=123456';
    
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname='ServerA',@useself='false',@locallogin='ccc',@rmtuser='abc',@rmtpassword='123456'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'collation compatible', @optvalue=N'false'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'data access', @optvalue=N'true'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'dist', @optvalue=N'false'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'pub', @optvalue=N'false'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'rpc', @optvalue=N'true'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'rpc out', @optvalue=N'true'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'sub', @optvalue=N'false'


            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'connect timeout', @optvalue=N'0'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'collation name', @optvalue=null
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'lazy schema validation', @optvalue=N'false' 
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'query timeout', @optvalue=N'0'
            
            EXEC master.dbo.sp_serveroption @server='ServerA', @optname=N'use remote collation', @optvalue=N'true'
            
            EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = 'ServerA', @locallogin = NULL , @useself = N'False',@rmtuser='abc',@rmtpassword='123456'



然后在B服务器的数据库DATABASE_B运行以下语句导入数据
insert into TBL_B(B_NUM,B_IC_NUM) 
select A_NUM,A_IC_NUM from ServerA.DATABASE_A.dbo.TBL_A

[解决办法]

引用:
引用:B_Logic_NUM自增逻辑另外处理,可以先导入临时表,处理完成后在写入最后的表
好的谢谢,
另外的问题是因为A,B两表,字段不同,数据类型不同,且B表有多个外键约束,当我把A表的字段插入B表时,经常会提示,INSERT 语句与 COLUMN FOREIGN KEY 约束 冲突,如何解决在B表中有多个外键,insert时,出错
 ……

1.对于你要的B_Logic_NUM 自增ID,可以这样先把A表插入一个自增字段,如下:
ALTER TABLE TBL_A ADD  new_id int IDENTITY(0001000001,1)
如果已经A表中已经存在自增ID,那么需要先删除 如下。
ALTER TABLE TBL_A  drop COLUMN 原始A表的自增列
这样A表中就存在以0001000001起始,增量为1的,新列。
2。将修改后的A表,insert到B表中,这个你应该很简单了。
3.约束问题,造成,不能将A表数据,倒入到B表,那么你可以先把A表的相关外键删除,insert数据以后,在添加外键。

热点排行