oracle sqlldr导入导出

目录

导入实例

常见问题解决办法

1 导出大字段

2 换号符处理

3 数据文件的字段超出最大长度

4 ORA-12899: 列的值太大

5 遇到特殊字符&处理

参考网址

sqlldr 数据类型

sqlldr 配置参数

qlplus 中执行sql 遇到特殊字符&处理

oracle 导出 字符超长处理


导入实例

打开命令提示符,执行命令

sqlplus username/[email protected]:1521/orcl
--执行sql脚本
@E:\2019_transdata\adlib4_db\建库脚本\Oracle\0_基础.sql
--导入
sqlldr "'username/[email protected]:1521/orcl'" control=E:/1_exp_test.ctl log=E:/1_exp_test.log direct=true bad=E:/log/1_exp_test.bad rows=10000 errors=1000

1_exp_test.ctl内容如下:

LOAD DATA
INFILE 'E:/1_exp_test.data' --修改对应的路径和文件名
TRUNCATE INTO TABLE exp_test --修改对应的表名
FIELDS TERMINATED BY x'1B'   --修改对应的分割符
TRAILING NULLCOLS
(
  filed1 ,
  filed2 char(100000000)
)

常见问题解决办法

1 导出大字段

ctl文件中“TRAILING NULLCOLS”中对应的clob字段添加char(1000000000),括号数字大小要比clob字符长度大。

2 换号符处理

replace(a.filed2,'0x0a',chr(10))

3 数据文件的字段超出最大长度

sqlldr对于字符类型默认长度为255,如果超过255需要指定长度,见红色下面ctl文件中的红色字体:

LOAD DATA  

INFILE 'data_cn_01.dat' "STR X'0D0A232323230D0A'"

INTO TABLE tpis_pat_cn

APPEND

FIELDS TERMINATED BY '||||'

TRAILING NULLCOLS

(

 an,

 pn,

 ab CHAR(4000),

 source CONSTANT 'SIPO',

 patent_id "seq_tpis_pat_base.NEXTVAL"

)

4 ORA-12899: 列的值太大

其错误原因在于从文本中读取的字段值超过了数据库表字段的长度,需要用Oracle函数解决,如下红色字体:

LOAD DATA  

 ...

TRAILING NULLCOLS

(

 ...

 ab CHAR(4000) "SUBSTRB(:ab,1,2000)",

 ...

)

5 遇到特殊字符&处理

原SQL如:update trans_record set params = 'service=standard_bail&xxx=112' where trans_record_id = '3041';

执行时执行出现问题,提示输入对应参数的值。

经查,问题就出在字符&上,他是一个控制参数传入的字符,要解决执行的问题,有如下几种方式:

1、在sqlplus中执行set define off关闭特殊字符,关闭前可用show define查看有哪些特殊字符;

2、update trans_record set params = 'service=standard_bail'||'&'||'xxx=112' where trans_record_id = '3041';

3、update trans_record set params = 'service=standard_bail'||chr(38)||'xxx=112' where trans_record_id = '3041';

4、update trans_record set params = 'service=standard_bail/&xxx=112' where trans_record_id = '3041';

以上4种方式推荐使用第一种方式,简单,彻底解决特殊字符问题(前提是看清到底关闭了哪些特殊字符);因为特殊字符不止有&,还有%等;

参考网址

sqlldr 数据类型

http://www.anguora.com/20140729/

sqlldr 配置参数

https://blog.csdn.net/lwei_998/article/details/7730025

qlplus 中执行sql 遇到特殊字符&处理

https://blog.csdn.net/happyqwz/article/details/8443576

oracle 导出 字符超长处理

http://blog.sina.com.cn/s/blog_646e1e020100rzls.html

猜你喜欢

转载自blog.csdn.net/xingxingmingyue/article/details/111352900