oracle通过sqlldr导入文本数据
2017-11-28 17:06
591 查看
原文链接:https://www.cnblogs.com/atwanli/articles/6264658.html
执行命令:
ctl脚本
CSV数据
复杂实例:
数据:
CTL脚本(数据存放在脚本中也可分离出)
执行命令
sqlldr user/passwd@dbservice control=users.ctl
执行命令:
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 data append 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-01 1 606110048163089 6218710000005136 3 2017-01-01 1 606110048163089 6218710000005136 3 2017-01-01 1 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
相关文章推荐
- 使用sqlldr导入文本数据到oracle
- ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析
- oracle12c:通过oracle客户端工具配置tns,并使用sqlldr进行批量导入数据
- oracle impdp通过network_link不落地方式导入数据
- Oracle中导入文本数据的方法
- sqlldr导入数据(以PostgreSql--->Oracle为例)
- 通过Sqoop工具将Oracle数据导入到HBase
- oracle通过ociuldr导入平面文件数据。
- CSV文本数据如何导入oracle
- [转]关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
- oracle表导入文本。txt数据
- oracle 导入数据的sqlldr命令
- Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
- Excel 通过plsql 向oracle导入数据时报错:variant conversion error for variable
- 通过sqoop导入Oracle数据到Hive时异常.IOException: Cannot run program "hive": error=2, No such file or directory
- 通过SSIS设计ETL来将Oracle/DB2/Sybase等数据源的数据定期导入到数据仓库(一)
- 导入文本数据(oracle表)到hive
- oracle如何快速导入导出文本格式数据
- oracle在cmd下通过命令导入导出数据
- 教你Excel数据通过plsql导入到Oracle.