基于PLSQL数据手工导入方案

来源:互联网 发布:淘宝csol账号被找回 编辑:程序博客网 时间:2024/06/07 06:33

基于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脚本。

原创粉丝点击