oracle rac 导入数据,oracle RAC 11g sqlload 生产表导入数据(ORA-12899)

背景:由于即将来临的双十一,业务部门(我司是做京东,天猫的短信服务),短信入库慢,需要DBA把数据库sqlload进数据库。

表结构如下:

MRS VARCHAR2(100),

STATUS VARCHAR2(8),

STATUSTJ VARCHAR2(8),

MMDD VARCHAR2(6),

SN VARCHAR2(20),

ROUTEID NUMBER(4),

RETURNTIME DATE,

RECEIVETIME DATE,

SUBMITTIME DATE,

MTYPE NUMBER(1),

SRSPAN NUMBER,

SPCODE VARCHAR2(21),

BANCHROUTE NUMBER(4),

PROVINCE VARCHAR2(20),

CITY VARCHAR2(20),

USERID NUMBER(10),

SCODE VARCHAR2(25),

UUID VARCHAR2(40)

编写控制文件:

LOAD DATA

INFILE '/u01/app/oracle/utl/daodata/rrpt/rrp_181108.txt'

APPEND

INTO TABLE S_T_RTNRP_STATUS

FIELDS TERMINATED BY ','

(

MRS,

STATUS,

STATUSTJ,

MMDD,

SN,

RETURNTIME date "YYYY-MM-DD hh24:mi:ss",

RECEIVETIME date "YYYY-MM-DD hh24:mi:ss",

ROUTEID,

SUBMITTIME date "YYYY-MM-DD hh24:mi:ss",

MTYPE,

SRSPAN,

SPCODE,

BANCHROUTE,

PROVINCE,

CITY,

USERID,

SCODE,

UUID

)

sqlldr XXX/XXX@db75 control=SqlLdr2.ctl

报错如下:

cd90b78891dab4dc5096735078bc59b2.png

报错类似如下:

ORA-12899: value too large for column "SMART"."S_T_RTNRP_STATUS"."SCODE" (actual: 32, maximum: 25)

后面修改了表的字段,有原先varchar(20)改成varchar(50)还是报错(由于操作时间,未截图)。

怀疑是字符集的问题,经查实,操作系统的字符集是UTF8,而数据库的字符集是16gbk,导入的PROVINCE, CITY,字段为中文(如下图),后面重新的应用导出数据,不要这两个字段。

SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET')

7a30cfdd1c56ce37c5163f4f84cbd2ea.png

67e52bcb9ab7c3f764e7f3540047378c.png

重新修改控制文件:

LOAD DATA

INFILE '/u01/app/oracle/utl/daodata/rrpt/rrp_181108.txt'

APPEND

INTO TABLE S_T_RTNRP_STATUS

FIELDS TERMINATED BY ','

(

MRS,

STATUS,

STATUSTJ,

MMDD,

SN,

RETURNTIME date "YYYY-MM-DD hh24:mi:ss",

RECEIVETIME date "YYYY-MM-DD hh24:mi:ss",

ROUTEID,

SUBMITTIME date "YYYY-MM-DD hh24:mi:ss",

MTYPE,

SRSPAN,

SPCODE,

BANCHROUTE,

USERID,

SCODE,

UUID

)

export LANG=16GBK

export nls_lang="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

sqlldr xxx/xxx  control=SqlLdr2.ctl

7ef5382f4c3f7e3c5c4cdf54d3780ee9.png

后成功导入30多万条记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值