本文介绍了四种方法,实现将一个csv文件(文本以逗号分割)导入oracle数据库表。
1 复制、粘贴
将csv文件以excel打开,删除题头行,只保留数据,在第一列前面加空白列,列的顺序与表中字段顺序一致。
复制csv中所有数据单元格,包含空白列;
在plsql中执行select * from test for update;后锁定表,使用鼠标选中第一行,ctrl+v,实现将数据粘贴到表中。粘贴完成时间视数据量而定,数据较多,则时间稍久,且会消耗较大内存。可打开任务管理器,查看plsql进程占用的内存大小。
粘贴完成后,正常csv的每列数据正好对应在表的每个字段上,提交数据,解锁表。
此方案的适应场景:excel中待复制的数据,格式为文本格式(或由其他格式处理为文本格式,且数据值不变化),数据为abc等字母,或者汉字,或者金额。注:此处的金额是指数值,而非用户编号等以0开头的字符串。如果csv中含有以0开头的字符串,在excel打开后,excel会自动将其以科学计数法显示,此时复制粘贴,用户编号要么0丢失,要么表中得到的是科学计数法的字符串,此场景可用第2种方案(借助一个工具,OraLoader.exe)
2 OraLoader工具导入
下载地址:http://download.csdn.net/detail/Peart_Boy/2340325#comment
此工具与plsql类似,但是功能大大简化,仅设计用于导入txt csv等文件到oracle中。
下载工具,运行,显示登录页面,点击取消,Options-Oracle Home,设置oracle路径及oci.dll路径,此处可与plsql中路径配置(plsql,工具-首选项-Oracle-连接,oracle主目录,OCI库)相同。可以运行plsql的机器,就可以运行该工具。
配置完成后,登录,成功后,菜单File-Load Txt,Csv,按照界面提示:选择文件,选择表,设置要导入的列数据(如果csv中列数比表中字段数多,则需设置),设置是否包含题头行。设置完成,页面最下方有预览列表,工具已自动将csv每列与表中每列按顺序进行对应,这点非常重要,plsql的文本导入功能不能自动对应csv每列与表每列,必须手动指定。如果csv列数较多,如200+,则plsql的文本导入器功能几乎不可用。对于这个场景,oraloader是最佳选择。查看预览列表,没有问题,建议点击保存为sql按钮,工具会将数据导出为sql insert语句。将insert语句拷贝出,在plsql的命令窗口里执行,这样的好处是,可以看到哪行执行报错。如果执行报错,终止执行。除非业务上不要求数据的完整性。如果报错,将报错的sql语句拷贝出,放在sql窗口中,格式化,执行,查看报错的位置。解决,修改sql文件,重新执行sql insert语句。
3 plsql 文本导入器
登录plsql,工具-文本导入器,点击左上角打开csv文件,按照界面指引,设置相关参数。具体用法,可以到网上搜,文章比较多。导入时,需要手动将csv列与表字段进行一一对应,且需设置字段类型。此方案适合csv列较少,但是数据较多的场景,几十w或者几百w记录。直接复制粘贴,内存可能会崩溃。
4 oracle命令sqlldr 命令
此方案需要可以执行sqlldr命令的环境,即安装oracle客户端的机器。具体用法,可以到网上搜,文章比较多。
如果文章对你有帮助,请随意打赏:)