oracle通过sqlldr导入文本数据
来源:互联网 发布:上海哪里有mac专柜 编辑:程序博客网 时间:2024/05/19 04:28
原文链接:https://www.cnblogs.com/atwanli/articles/6264658.html
执行命令:
sqlldr userid=epay/epay control=/tmp/test.ctl log=/tmp/test.log data=/tmp/test.csv rows=10
命令参数:
userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描
ctl脚本
load dataappend into table "T_USER_CTRL" -- 操作类型
-- 1) insert --为缺省方式,在数据装载开始时要求表为空
-- 2) append --在表中追加新记录
-- 3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
-- 4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录fields terminated by ' ' -- 数据分隔符trailing nullcols(ID,CUST_NUM,CARD_NO,MER_DAY_AMT,MER_DAY_AMT_DATE DATE "YYYY-MM-DD HH24")
CSV数据
1 606110048163089 6218710000005136 3 2017-01-011 606110048163089 6218710000005136 3 2017-01-011 606110048163089 6218710000005136 3 2017-01-011 606110048163089 6218710000005136 3 2017-01-01
复杂实例:
数据:
insert into users values(1,'Unmi',3,sysdate); insert into users values(2,NULL,5,to_date('2008-10-15','YYYY-MM-DD')); insert into users values(3,'隔叶黄莺',8,to_date('2009-01-02','YYYY-MM-DD')); insert into users values(4,'Kypfos',NULL,NULL); insert into users values(5,'不知秋',1,to_date('2008-12-23','YYYY-MM-DD'));
" ","USER_ID","USER_NAME","LOGIN_TIMES","LAST_LOGIN"
"1","1","Unmi","3","2009-1-5 20:34:44"
"2","2","","5","2008-10-15"
"3","3","隔叶黄莺","8","2009-1-2"
"4","4","Kypfos","",""
"5","5","不知秋","1","2008-12-23"
CTL脚本(数据存放在脚本中也可分离出)
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA
INFILE * -- 因为数据同控制文件在一起,所以用 * 表示
append -- 这里用了 append 来操作,在表 users 中附加记录
INTO TABLE users
when LOGIN_TIMES<>'8' -- 还可以用 when 子句选择导入符合条件的记录
Fields terminated by ","
trailing nullcols
(
virtual_column FILLER, --跳过由 PL/SQL Developer 生成的第一列序号
user_id "user_seq.nextval", --这一列直接取序列的下一值,而不用数据中提供的值
user_name "'Hi '||upper(:user_name)",--,还能用SQL函数或运算对数据进行加工处理
login_times terminated by ",", NULLIF(login_times='NULL') --可为列单独指定分隔符
last_login DATE "YYYY-MM-DD HH24:MI:SS" NULLIF (last_login="NULL") -- 当字段为"NULL"时就是 NULL
)
BEGINDATA --数据从这里开始
,USER_ID,USER_NAME,LOGIN_TIMES,LAST_LOGIN
1,1,Unmi,3,2009-1-5 20:34
2,2,Fantasia,5,2008-10-15
3,3,隔叶黄莺,8,2009-1-2
4,4,Kypfos,NULL,NULL
5,5,不知秋,1,2008-12-23
执行命令
sqlldr user/passwd@dbservice control=users.ctl
阅读全文
0 0
- oracle通过sqlldr导入文本数据
- 使用sqlldr导入文本数据到oracle
- sqlldr导入oracle数据
- sqlldr导入oracle数据
- 使用sqlldr命令将文本数据导入oracle数据库
- Linux主机sqlldr工具批量文本数据导入oracle数据库
- sqlldr 数据导入到Oracle
- sqlldr把文本导入到oracle数据库
- 外部数据导入Oracle数据库命令----sqlldr
- oracle数据导入sqlldr小例子
- 使用sqlldr命令向Oracle导入数据
- oracle使用sqlldr(有sequence)导入数据
- Oracle sqlldr批量导入数据常见问题解决
- Oracle sqlldr导入数据使用默认值日期
- 使用sqlldr导入数据到Oracle
- oracle之sqlldr命令数据导入
- sqlldr批量导入数据到Oracle
- Linux环境下使用定时器通过sqlldr向oracle数据库导入数据
- 反射机制
- 670. Maximum Swap
- 前台与PHP与Mysql
- yarn-日志聚合功能
- Dagger2入门,以初学者角度来观察
- oracle通过sqlldr导入文本数据
- 开源项目kcws代码分析--基于深度学习的分词技术
- C++ 指针篇01
- vim编辑器
- SpringMVC上传图片总结
- 关于虚拟机网络配置问题
- ActiveMQ
- SpringSecurity在SpringBoot 的实际应用
- Netty 断包