你的位置:首页 > 数据库

[数据库]将一个数据库中的数据导入另一个数据库(DB2)


将一个数据库中的数据导入另一个数据库(DB2)

我这里举得例子是使用的DB2数据库,其他数据库思路也是这样啦!

1、从db2 数据库中将表中的数据导入本地的excel中

export to d:\mytest.xls of del modified by nochardel coldel0x09 select * from IOUT_BUSI_YWDJMX_TEMP

2、在需要导入的数据库建立一个临时表

--创建临时表CREATE TABLE NBADV.l_hzcitywa(fhcode varchar(20),dhcode varchar(20),away DECIMAL(19, 4))DATA CAPTURE NONEIN USERSPACE1@ALTER TABLE NBADV.l_hzcitywaLOCKSIZE ROWAPPEND OFFNOT VOLATILE@

3、将excel另存为csv格式的文件,导入到数据库的临时表中

--将数据导入临时表import from "D:\hz.csv" OF DEL INSERT INTO nbadv.l_hzcitywa@

4、对数据进行处理

--查出重复的数据select distinct a.DELI_UNIT_CD,c.fhcode,a.ARRI_UNIT_CD,c.dhcode,count(c.away) from ST_I_STD_MILEAGE a inner join nbadv.l_hzcitywa c on a.DELI_CITY_NM=c.fhcode and a.ARRI_CITY_NM=c.dhcodegroup by a.DELI_UNIT_CD,c.fhcode,a.ARRI_UNIT_CD,c.dhcodehaving count(*)>1--删除掉重复的数据delete from nbadv.l_hzcitywa where dhcode in ('北京','东莞','拉萨','天水','酒泉','平凉','庆阳','铜川','咸阳','烟台')@

5、处理后的数据通过db2存储过程将所需要的数据更新到第二个数据库的表中,这里关键是找到临时表与需要更新数据的表中的关联关系;

--创建存储过程,更新合同里程drop procedure L_getcityway@create procedure L_getcityway(in v_personId  int)language sqldynamic result sets 0begindeclare sqlcode int;declare sqlstate char(5);declare v_errcode int default 0;--更新合同里程merge into ST_I_TRANS_MILEAGE ausing (select distinct a.DELI_UNIT_CD,c.fhcode,a.ARRI_UNIT_CD,c.dhcode,c.away from ST_I_STD_MILEAGE a inner join nbadv.l_hzcitywa c on a.DELI_CITY_NM=c.fhcode and a.ARRI_CITY_NM=c.dhcode and c.fhcode= '渭南')bon a.DELI_STORE_CD=b.DELI_UNIT_CD and a.ARRI_STORE_CD=b.ARRI_UNIT_CDwhen matched then update set a.ACTUAL_MILEAGE=b.away;--计算差异update ST_I_TRANS_MILEAGE set DIFFERENCE=(ACTUAL_MILEAGE-STD_MILEAGE)*100.000000/STD_MILEAGE where DELI_STORE_CD=2061000101 and STD_MILEAGE is not null and STD_MILEAGE<>0;--更新备注update ST_I_TRANS_MILEAGE set REMARK='无' where DIFFERENCE>10 and DELI_STORE_CD in ('2061000101','2061000102','2061000103','2061000104','2061000105');return v_errcode;end@

到此,已经实现从第一个数据库的表中的数据更新到第二个数据库中了;