IT俱乐部 Oracle Oracle如何编写一个sqlldr实例

Oracle如何编写一个sqlldr实例

准备工作

首先在D盘创建文件夹,命名为sqlldr

具体步骤

1、整理要导入数据,去除列名另存为csv文件

特别注意:csv文件是纯文本文件,一般以逗号分隔,如果导入的数据中存在逗号,可以给表格中的数据加上双引号将数据括起来。

数据内容:

sn_orderitem_20210412

id order_id item_id item_name price item_num
AB001 A001 1001 A 0.15 1
AB002 A001 1002 B 20 1
AB003 A001 1003 C 40 2
AB004 A005 1001 A 0.15 1
AB005 A005 1004 D 200 6
AB0015 A015 1005 E 40.5 1
AB0016 A019 1006 F 50 1
AB0017 A019 1007 G 24.5 2
AB0018 A020 1008 H 10.3 1
AB0001 A,B

结果:

给表格数据加上引号:!”@!”

标将数据另存为CSV UTF-8(Comma delimited)格式,存入sqlldr文件夹

2、在Oracle上创建存放数据的Table

create table sn_orderitem_20210412(
id        varchar(20), 
order_id  varchar(20), 
item_id   varchar(20), 
item_name varchar(20),
price     number,
item_num  number);

3、创建ctl文件

1.在sqlldr里创建一个新的文本文件

2.编辑信息如下

load   data
characterset UTF8
infile   'D:sqlldrsn_orderitem_20210412.csv'
append   into   table   sn.sn_orderitem_20210412
fields terminated by ','
trailing nullcols
(id OPTIONALLY ENCLOSED BY '"'
,order_id OPTIONALLY ENCLOSED BY '"'
,item_id OPTIONALLY ENCLOSED BY '"'
,item_name OPTIONALLY ENCLOSED BY '"'
,price OPTIONALLY ENCLOSED BY '"'
,item_num OPTIONALLY ENCLOSED BY '"'
 )

3.将文本文件另存为 sn_orderitem_20210412.ctl

解析:

load   data                                    –控制文件标识
characterset UTF8                      –设置编码格式,防止中文乱码

infile   ‘XXX.csv’                           –即将导入的csv文件及路径
append  into  table   XXX            –Oracle上创建的表,在原表进行追加数据
fields terminated by ‘,’                –以逗号分隔 (分隔方式可以是空格,制表符X’09’……)
trailing nullcols                           –允许某地为空值,保证缺少部分字段时,整个表格不错位
(XX optionally enclosed by ‘”‘    –每个字段都是用“”包围(当文本里的字符和分隔符有冲突是可以使用)
……
 )

拓展:

导入数据共有四种方式:

  • insert:为缺省方式,在数据装载开始时要求表为空;
  • append:在表中追加新记录;
  • replace:删除旧记录,替换成新装载的记录;
  • truncate:删除旧记录(用 truncate table 语句),替换成新装载的记录。

4、编写Windows批处理文件

1.在sqlldr里创建一个新的文本文件

2.编辑信息如下

D:appisadminproduct11.2.0dbhome_1BINSQLLDR.EXE userid=test/test@local11g control=D:sqlldrsn_orderitem_20210412.ctl log=D:sqlldrsn_orderitem_20210412.log bad=D:sqlldrsn_orderitem_20210412.bad  SILENT=(HEADER,FEEDBACK) errors=0

3.将文本文件另存为 sn_orderitem_20210412.bat

解析:

D:appisadminproduct11.2.0dbhome_1binsqlldr.exe   –sqlldr工具调用

userid=test/test@local11g                                     –用户名/密码@库名

control=D:sqlldrsn_orderitem_20210412.ctl        –控制文件绝对路径

log=D:sqlldrsn_orderitem_20210412.log             –指定日志文件路径

bad=D:sqlldrsn_orderitem_20210412.bad           –指定错误文件路径

silent=(header,feedback)                                       –隐藏数据载入过程中的提示信息

errors=0                                                                   –允许错误行数为0

5、双击运行Windows批处理文件

6、查询结果

导入Oracle里的数据会带上双引号,回去看了一下csv文件发现,从excel里加引号后导出csv文件后,双引号会变为三引号,故造成此结果,我的方法直接在txt文件中将三引号替换为双引号后再导入,如果有其它方法的小伙伴可以评论区交流~当然如果你的数据里没有出现逗号,可以不需要用引号来分隔,因此也不会出现这样的问题啦
除了转化为csv,也可以用txt文件进行导入,只需要将excel转化为以制表符分隔的txt文本就可以了创建.bat Windows批处理文件的便利之处是可以重复使用,只需修改控制文件中需要变动的参数后再次运行就可以了,也可以进行批量导入

到此这篇关于Oracle如何编写一个sqlldr实例的文章就介绍到这了,更多相关Oracle编写sqlldr内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/oracle/8916.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部