设为首页 收藏本站
查看: 516|回复: 0

[经验分享] 利用Excel,Oracle里批量导数据

[复制链接]

尚未签到

发表于 2016-7-27 07:11:07 | 显示全部楼层 |阅读模式
  这里是将几个医院的所有医生信息,填写入Excel后,导入到Oracle。当然,oracle不能直接读取Excel的内容,但我们可以转弯来实现。
可以简单的认为,Excel表中的内容一一对应于数据库中一个表的字段,一一插入即可。实际当中可能不会这么简单,但原理一样,如果有关联表,需要插入后生成的字段id,则设置为主键,
利用索引,获取当前值即可继续操作;原理一样。
如果你的团队也是分工协作的,Excel里面的格式如下所示:
DSC0000.jpg
每一行为一个医生的信息。如果你的团队也是分工协作的,那将这个格式给相应的人员,让他们将数据录入其中即可。我们开始考虑怎么让他们导入表中。
导入表,无非是一系列的insert语句,每条语句中的数据为Excel中的每一行数据。所以我们需要将Excel中的数据导出到一个文件中,每个医生的资料为一行,各个资料之间用一个标示符隔开,
可以很容易的得到每个医生、每个对应项中的值。
Excel中自带有很多导出方式。其中可以到处xml格式的数据,如果你有专门的工具可以读取,或者自写一个读取此xml格式的程序,也可以。注意的是,转为xml格式后,比如“医生传真”这项
没有值,在xml结点树中则无此项;也可以导出为.txt格式的文件,但导出后保留了原有格式的样子,利用制表符,我们无法很轻松的获得每项数据。最好是我们可以指定导出时每项之间的间隔
标示符。所以我们想到了Access。
微软的产品,相互之间导入导出是完全没有问题的。将Excel的数据导入Access中(Access中“打开”),在Access中是以外部链接表的形式打开的。这时不能在Access中修改数据,只能在对应链接的Excel中修改,
修改后,Access中的数据也会相应的改变。检查Access中的数据无问题,则准备从Access中将数据导出。
在外部链接表上单击右键,选择“导出”,选择好保持目录,选择“文本文件”,下一步;
选择导出格式,为了便于读取各项值,当然选择“带分隔符”,下一步;
选择分隔符,如果你要导入的数据中数据不多,不杂,可以选择分号或者逗号,但我要到的数据中包含文本,可能会有逗号等,所以我选“其他”,选择一个不常用的,如"#";文本标示符可以去掉,我们在生成
批量sql语句时可以自己手动控制添加,下一步;
确定导出即可。
导出的数据如下所示:
DSC0001.jpg
到了这个时候,在读取数据已经不难。定位该.txt文件,利用文件流一行一行的读取,读取后根据"#"分开,分别对应到insert语句中的每一个字段,批量导入的工作就算完成了。
其中有个很重要的问题就是,如果利用java的IO流直接从文件中读取后,中文全为乱码。我们需要转换文件编码格式。利用newstr = new String(oldstr.getBytes("ISO-8859-1"), "GBK");转化为GBK格式
即可正常使用了。
当然,做就做的完美点。中间或许有些对应项为空等,如果要加判定的加上;要读取图片的,读取图片后记录位置。Excel中原有存数字的位置,从Access中导出来后,每个都变为X.00了,这时如果数据库中的
字段为number(n)型,则数据导入会出错。所以这个也需要处理掉。等等等等。这些都是简单的工作了,有了这个思路,剩余的一切都很简单。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-249870-1-1.html 上篇帖子: oracle 日期比较及常用函数 下篇帖子: ORACLE ORDER BY用法总结(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表