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铺底数据 -含自动插入生成自定义序列号的主要内容,如果未能解决你的问题,请参考以下文章

oracle导入excel数据导致ora000001

oracle导入EXCEL数据的两种方式

如何把excel中的数据导入到oracle数据已有的表中,excel中的数据和表中的数据字段都是对应的

怎么将Excel中的数据导入到 oracle中

将excel中数据用JAVA代码导入到oracle中,遇到日期类型应该怎么处理!?

如何将excel数据导入到数据库oracle11g