由于从老系统导数据是通过excel表的方式导出的,里面数据有几十万条数据,如果只是简单通过复制黏贴的方式复制到数据库中,那么这个过程将会非常耗时和繁琐的。于是就去研究了下sqlloader如何使用,经过研究后发现这个方法非常管用,就记录下来供大家参考参考
第一步:整理Excel表格的数据如下:
excel表格的数据列分别对应数据库表的字段(注意:顺序一定要严格按照数据库表字段的顺序)如:xs_id,xnxq_id,kc_id,cjlx,jxrw_id,kslc_id,zpcj,zzcj,jd,cjxs_id,cjbzdm,cjsm,bz,cjr,cjsj,zhxgr,zhxgsj
数据库表设计如下:


第二步:编写控制文件,先通过鼠标右键新建一个txt记事本,然后再修改类型为ctl文件,如命名为:input.ctl
里面内容如下:其中
infile --告诉sqlldr要加载的数据就包含在控制文件本身
E:\sixscore.csv表示将第一步中的excel表格中数据转换为csv文件后存放的位置
into table T_CJGL_XSHZCJ_TMP --加载到哪个表
nullcols(xs_id,xnxq_id,cjlx,kc_id,jxrw_id,kslc_id,zpcj,zzcj,jd,cjxs_id,cjbzdm,cjsm,bz,cjr,cjsj,zhxgr,zhxgsj) --所要加载的列
terminated by ','表示用逗号,
使用TRAILING NULLCOLS。这样,如果输入记录中不存在某一列的数据,sqlldr就会为该列绑定一个null值。
具体代码内容如下:
load data infile 'E:\sixscore.csv' insert into table T_CJGL_XSHZCJ_TMP fields terminated by ',' trailing nullcols(xs_id,xnxq_id,cjlx,kc_id,jxrw_id,kslc_id,zpcj,zzcj,jd,cjxs_id,cjbzdm,cjsm,bz,cjr,cjsj,zhxgr,zhxgsj)
第三步:将xls文件转换成.csv文件,步骤如下:
1.点击文件,另存为

2.选择文件类型为.csv

注意:如果是多工作簿要先拆分出来,不然不能由.xsl格式转换成.csv格式:

将input.ctl和.csv文件同时放在E盘如:

3.存放在自己指定的位置如E盘即可。
第四:打开win+R输入cmd,然后输入:sqlldr userid=tzjw_hxsj/tzjw_hxsj@55.192.96.100/orcl control=e:\input.ctl
点击回车即可看到就表示成功了

-------------------------------------
sqlldr导入的四种加载方式:
APPEND :原先的表有数据 就加在后面
INSERT:装载空表 如果原先的表有数据 sqlloader会停止 默认值
REPLACE :原先的表有数据 原先的数据会全部删除
TRUNCATE :指定的内容和replace的相同 会用truncate语句删除现存数据
浙公网安备 33010602011771号