时间:2023-10-31来源:系统城装机大师作者:佚名
首先在D盘创建文件夹,命名为sqlldr
特别注意: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文件夹
1 2 3 4 5 6 7 |
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); |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
load data characterset UTF8 infile 'D:\sqlldr\sn_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 '"' ) |
解析:
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 语句),替换成新装载的记录。
1 | D:\app\isadmin\product\11.2.0\dbhome_1\BIN\SQLLDR.EXE userid=test/test@local11g control=D:\sqlldr\sn_orderitem_20210412.ctl log=D:\sqlldr\sn_orderitem_20210412.log bad=D:\sqlldr\sn_orderitem_20210412.bad SILENT=(HEADER,FEEDBACK) errors=0 |
3.将文本文件另存为 sn_orderitem_20210412.bat
解析:
D:\app\isadmin\product\11.2.0\dbhome_1\bin\sqlldr.exe --sqlldr工具调用
userid=test/test@local11g --用户名/密码@库名
control=D:\sqlldr\sn_orderitem_20210412.ctl --控制文件绝对路径
log=D:\sqlldr\sn_orderitem_20210412.log --指定日志文件路径
bad=D:\sqlldr\sn_orderitem_20210412.bad --指定错误文件路径
silent=(header,feedback) --隐藏数据载入过程中的提示信息
errors=0 --允许错误行数为0
导入Oracle里的数据会带上双引号,回去看了一下csv文件发现,从excel里加引号后导出csv文件后,双引号会变为三引号,故造成此结果,我的方法直接在txt文件中将三引号替换为双引号后再导入,如果有其它方法的小伙伴可以评论区交流~当然如果你的数据里没有出现逗号,可以不需要用引号来分隔,因此也不会出现这样的问题啦
除了转化为csv,也可以用txt文件进行导入,只需要将excel转化为以制表符分隔的txt文本就可以了创建.bat Windows批处理文件的便利之处是可以重复使用,只需修改控制文件中需要变动的参数后再次运行就可以了,也可以进行批量导入
到此这篇关于Oracle如何编写一个sqlldr实例的文章就介绍到这了,
2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析2023-10-31
Oracle数据库的系统结构windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31
Oracle单行函数(字符,数值,日期,转换) 1、字符函数接收字符输入返回字符或者数值,dual 是伪表 1.1大小写转换函数 1.2连接字符串X和concat(X,Y) 1.3ASCII码与字符转换 1.4返回字符串索引位置:instr(x,str) 1.5返回字符串长度...
2023-10-31