基于PLSQL数据手工导入方案

基于PLSQL数据手工导入方案

1. 问题域

       在我们日常工作中,经常遇到需要将数据导入数据库中。这些数据的格式通常不一样,且数据量不是很大,时不时就会有这样的需求。要将这些数据导入数据库中,我们通常有三种实现方式。

1)       写插入脚本

缺点是不灵活,容易出错,如果数据量较大需耗费较多的工作量;

2)       在程序中新增一个导入数据功能

缺点是不灵活,耗费较多工作量,导入数据格式不同或者导入的表不同需开发不同的功能;

3)       使用数据迁移工具

缺点是成本巨大,需要资源较多,使用在小数据量上比较浪费,犹如杀鸡用牛刀。

       那除了这三种实现方式,有没有更简单的方法呢?只需要拷贝粘贴就可导入,有!那接下来我们就看我是如何实现的吧!

2. 最佳实践

2.1.操作目标

将提供的EXCEL文档《人员补扣信息》中的数据导入到W_DEDUCT表中。下图为提供的文档部分截图:

2.2.数据准备

在数据库中查询,W_DEDUCT的当前主键ID的最大值,或该表sequence的下一个值;

查询sequence的下一个值查询脚本:

selectseq_w_deduct.nextval from dual(seq_w_deduct为W_DEDUCT的sequence)

2.3.调整格式

调整EXCEL文档《人员补扣信息》的样式:

a)  去掉多余的列(即数据库中不需要的列,如文档中的姓名列),

b)  新增需新增的列(即文档中没有,但数据库需要的列,如主键ID列),

c)  在文档首列新增一列空白列(注意,此步很重要,后面会说明)

调整后文档如下图所见:

2.4.导入准备

打开PLSQL,新建SQL WINDOW,在新建的窗口中写W_DEDUCT的查询脚本,查询应注意以下事项:

a)  使用语句,用来手工加锁并操作数据;

b)  不需要用,应确保查询出来的列与EXCEL的列相对应(注意查询时不要出现重复的列);

c)  用此方法插入数据时,为不影响基础数据,for update时,不要有查询信息,可以用1 = 2此类不成立的条件来过滤

查询脚本如下图所示:

2.5.导入数据

a)  执行脚本,执行后出现以下窗口:

b)  单击结果窗口工具栏的小锁,解锁结果窗口:

c)  复制EXCEL文档中的数据(按行复制,为避免EXCEL中的列与查询出的列不一致,可将EXCEL首行即标题行一起复制)

d)  到PLSQL中已解锁的窗口,单击两次表头下 一行的首列,选中首行,如下图:

e)  选择粘贴,将数据粘贴到结果窗口中,如下图

f)  确认各列都与列表对应上,选中首行后单击结果窗口工具栏的减号,删除首行:(如选择数据时未选中标题行,此步骤可省略)

2.6.提交数据

a)  确认数据无误后,单击结果窗口工具栏的绿色勾勾,确认插入数据:

b)  单击结果窗口工具栏的小锁,锁定窗口:

c)  单击工具栏的commit按钮,提交事务:、


3.      总结

就这样,应用EXCEL和PLSQL工具,整理完数据,写好查询脚本,通过复制、粘贴简简单单的就将数据插入到数据库中。那下一次,再看我如何应用EXCEL、PLSQL、以及文本编辑器,处理一些较复杂的数据,并将其转换为生产上能执行的INSERT脚本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值