Oracle数据库导入Excel铺底数据 -含自动插入生成自定义序列号
Posted 小仇哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库导入Excel铺底数据 -含自动插入生成自定义序列号相关的知识,希望对你有一定的参考价值。
Oracle数据库导入Excel铺底数据-含自动插入生成自定义序列号
这里以导入库存系统的库存表数据为例:
– 导入物资铺底数据
–1.生成对应库存编号
select concat(concat('KC',to_char(sysdate,'yyyyMMddHHmmss')),KGKC_SEQUENCE.Nextval ) kgs_storageno from kg_goods_storage ,dual
PS:此处库存编号生成规则为KC+时间戳+序列号,由于concat一次只能连接两个字符所以这里进行了两次连接,第一次连接的结果为:KC20191010161230,之后再与序列号进行连接,得到最终结果KC201910101612301001,此操作后续需要用到也是后续能够进行下去的基础,所以放在最开始的地方提出来。
– 2 创建库存临时表
-- Create KG_GOODS_STORAGE_TEMP
create table KG_GOODS_STORAGE_TEMP
(
kgs_materialcode VARCHAR2(20),
kgs_goodsnum NUMBER(10),
kgs_goodsorg VARCHAR2(20),
kgs_createtime VARCHAR2(20),
kgs_updatetime VARCHAR2(20),
kgs_loginid VARCHAR2(20),
kgs_remark VARCHAR2(100)
)
-- Add comments to the columns
comment on column KG_GOODS_STORAGE_TEMP.kgs_materialcode
is '物料编码';
comment on column KG_GOODS_STORAGE_TEMP.kgs_goodsnum
is '物资库存数量';
comment on column KG_GOODS_STORAGE_TEMP.kgs_goodsorg
is '库存机构';
comment on column KG_GOODS_STORAGE_TEMP.kgs_createtime
is '创建时间';
comment on column KG_GOODS_STORAGE_TEMP.kgs_updatetime
is '更新时间';
comment on column KG_GOODS_STORAGE_TEMP.kgs_loginid
is '操作员ID';
comment on column KG_GOODS_STORAGE_TEMP.kgs_remark
is '备注 预留字段';
-- 查询
select * from kg_goods_storage_temp for update
select * from kg_goods_storage order by kgs_storageno
PS:此处需要格外注意,临时表的字段与实际的库存表基本一致,少一列库存编号,即我们需要生成的’序列号’。
– 3 导入excel数据进临时表
PS:Excel模板字段头与临时表保持一致即可
打开PLSql 工具-文本导入器 复制需要铺底的数据,如图点击粘贴按钮,核对一下结果预览,发现数据一致,点击到Oracle的数据,填好对应的所有者,表之后,需要关注对应字段的sql函数,如第二个图:
然后点击导入即可将excel中的数据导入到临时表中。
– 4 将临时表数据补充库存编号后批量插入到库存表
insert into KG_GOODS_STORAGE
select concat(concat('KC',to_char(sysdate,'yyyyMMddHHmmss')),KGKC_SEQUENCE.Nextval ) kgs_storageno,KGS_MATERIALCODE,KGS_GOODSNUM,KGS_GOODSORG, KGS_CREATETIME,KGS_UPDATETIME,KGS_LOGINID,KGS_REMARK from kg_goods_storage_temp ,dual
PS:此处需使用到最开始的自动生成序列号的sql,最后将查询出来的所有数据插入到正式表即可完成excel数据的导入工作。
– 插入铺底数据:org_id为表tlcbhrm_account中字段,现在的场景是将此字段及此字段的变形 substr(org_id,0,4)+’99999’一起插入另外一张表中做映射关系;
insert into XZ_HS_ORGRELATION
select concat(xh.xz_orgcodes,'99999') xz_orgcode,xh.org_id from
(select
substr(org_id,0,4) as xz_orgcodes,org_id from tlcbhrm_account where layer_code = '0021') xh
以上是关于Oracle数据库导入Excel铺底数据 -含自动插入生成自定义序列号的主要内容,如果未能解决你的问题,请参考以下文章
如何把excel中的数据导入到oracle数据已有的表中,excel中的数据和表中的数据字段都是对应的