sqlldr 导入有逗号的文本格式入库

1.建表

2.创建ora.ctl
sqlldr 导入有逗号的文本格式入库_第1张图片
load data
infile ‘测试.txt’
replace into table test08
( id char terminated by ‘,’,
USERNMAE char terminated by ‘,’,
mobile char terminated by ‘,’,
identified_card char terminated by ‘,’,
address char terminated by whitespace
)

3.把xls的excel 另存为csv,打开csv,另存为utf-8的记事本文件上传到linux

4.执行语句
sqlldr userid=datawork/123@orclpdb control=ora.ctl log=./imptable/load.log

遇到的问题:
打开的txt为乱码,是windows的编码格式为gbk,linux为utf-8,需要在windows上编码为utf-8;或者inconv设置编码
sqlldr 导入有逗号的文本格式入库_第2张图片

检查ctl文件和txt文件的逗号是否为英文 “,”

检查用户的默认表空间是否为指定表空间,是否有使用权
sqlldr 导入有逗号的文本格式入库_第3张图片
查询:select username,default_tablespace from dba_users where username=‘DATAWORK’;
格式:alter user datawork quota unlimited on users;

并发操作:
 sqlldr userid=/ control=result1.ctl direct=true parallel=true
sqlldr userid=/ control=result2.ctl direct=true parallel=true
sqlldr userid=/ control=result2.ctl direct=true parallel=true

当加载大量数据时(大约超过10GB),抑制日志的产生:
  SQL>ALTER TABLE RESULTXT nologging;
这样不产生REDO LOG,可以提高效率。然后在CONTROL文件中load data上面加一行:unrecoverable
此选项必须要与DIRECT共同应用。
  在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到1-10G就算不错了,开始可用结构
相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。

参考答案

你可能感兴趣的:(oracle数据库)