SQL_loader批量上传数据
1. 注释
在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中。如果是小数据量,如几十条至几百条,那么用plsql dev工具,在查询命令后加上for update 然后解锁,把数据复制粘贴进去就可以了。
但如果遇到大数据量几万至几十万时,上述方法就不可行了。
如下介绍如何使用oracle自带的sqlloader上传数据。
2. SQL_LOADER上传数据
2.1 sql_loader说明
sql*loader是oracle自带程序。需要上传数据的本机只要安装了oracle数据库或客户端就会自动集成该工具。但是不同的版本对控制文件的写法要求有所不同。具体可参见2.3节或者附件控制文件的内容。
2.2 编辑数据文件
要使用sql*loader,其数据文件必须是两种,一种是 *.txt 的文本文件,另一种是 *.csv的文件。例如,需要上传的数据是使用excel编辑的,那么只需要将excel另存为[制表符分割的 txt 文件]或者另存为[逗号分割的csv 文件]即可。如下图:
注意:CSV格式的文件打开后跟excel的样式差不多,但实际存储方式不一样。在磁盘上CSV格式的文件中每个格子中的数据使用逗号分割开存储的。
这样的存储方式很有用,方面后面写控制文件。控制文件在控制读取数据的时候直接以逗号为标记读取数据。其实,plsql dev在导出文件的时候就可选择存储为csv格式。
按照以上方法,数据文件就准备好了。
2.3 编写控制文件
控制文件其实就是SQL_LOADER上传数据时需要运行的脚本,其后缀名为ctl。控制文件写明了数据文件的位置、加载数据的方式、加载到哪个表、如何读取数据等信息。
下面是一段简单、完整的控制文件的截图及解释:
load data
infile 'D:新建文件夹存量zzjgdm.csv'
append
into table ZX_QYDJ_CL_ZZJGDM_2017
(
ZZJGDM terminated by ',',
ZCH terminated by ',',
QYMC terminated by ','
)
图注:编写控制文件时用文本文件编写好,修改后缀名为ctl即可。
2.4 SQL_LOADER导入数据
制作好了数据文件和控制文件,接下来就是把数据导入oracle表中。
接下来执行导入命令,如果数据库在本机则可执行:
Sqlldr scott/leedb control=c:controlfile.ctl data=c:datafile.csv
如果是远程数据库,则可执行:
Sqlldr scott/leedb@xwdb control=c:controlfile.ctl data=c:datafile.csv
或
Sqlldr scott/leedb@192.168.0.20:1521/xwdb control=c:controlfile.ctl data=c:datafile.csv
(远程地址:端口/实例名称)