前端之家收集整理的这篇文章主要介绍了
SQL LOADER错误小结,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@在使用sqlLOADER装载数据时,由于平面文件的多样化和数据格式问题总会遇到形形色色的一些小问题,下面是工作中累积、整理记录的遇到的一些形形色色错误。希望能对大家有些用处。(今天突然看到自己以前整理的这些资料,于是稍稍整理、归纳成这篇博客,后面如果碰到其他案例,会陆陆续续补充在此篇文章。)
@H_
301_0@<span style="color: #ff0000">ERROR 1:
sqlLOADER装载数据成功,但是发现某些字段的
中文为乱码,这个是因为编码缘故造成乱码。可在控制
文件中
添加字符集编码参数
解决问题,
@H_
301_0@例如:CHARACTERSET 'ZHS16GBK' 或 CHARACTERSET 'UTF8',根据
数据库实际情况设置
数据库字符集。
<div class="jb51code">
<pre class="brush:
sql;">
LOAD DATACHARACTERSET 'ZHS16GBK' INFILE '/oradata/impdata/test.txt' APPEND INTO TABLE ETL.TESTFIELDS TERMINATED BY '@#$' TRAILING NULLCOLS(MON_CD,CITY_ID,CELL_ID,GPRS_USER_CNT,TERM_BRAND,BRAND_ID,FLUX,CELL_NAM
)
_0@Record 1: Rejected - Error on table DM.TM_WGGHF_CELL_USER_DAY,column TYPE_ID.
@H_
@H_301_0@添加日期函数处理特定格式的数据类型。否则会出现错乱格式
sql;">
LOAD APPEND INTO TABLE ODS.TO_ALARM_LOGFIELDS TERMINATED BY '@#$' TRAILING NULLCOLS(COLLECT_DT,DATE_CD,HR_CD,DISPH_LOST_REASON,COLLET_TYPE_ID,ALM_TM
"TO_DATE(:ALM_TM,'DD-MM-YYYY HH24:MI:SS','NLS_DATE_LANGUAGE=American')",ALM_DISCOVER_TM "TO_DATE(:ALM_DISCOVER_TM,ALARM_DELSTA_ID,ALM_RESUME_TM
"TO_DATE(:ALM_RESUME_TM,FP_ALM_SER,FP3_ALM_FINGMARK,AREA_NAM,VSEQUIP_NAM,VSEQUIP_STATUS_ID,VSEQUIP_SUBSTATUS_ID,PLAN_DISPH_TM
"TO_DATE(:PLAN_DISPH_TM,AUTO_PRETREAT_STATUS_ID,EMOS_RECORD_CNT,CONT_TIME,ALM_CNT
)
@H_301_0@文件里面缺少某些字段,可以在控制文件中添加常量参数,例如下面缺少COLLECT_DT这个字段的数据(其实是根据数据文件以及某些参数生成的),可以通过CONSTANT常量参数解决。
sql;">
LOAD DATACHARACTERSET 'UTF8'INFILE 'DEVICE_WIRELESS_GSMCELL_F_201201
30190002.CSV' "str '\r\n'"APPEND INTO TABLE STAGE.TS_RSRC_IRMS_GSMCELLFIELDS TERMINATED BY ','OPTIONALLY ENCLOSED BY '\'' TRAILING NULLCOLS(
COLLECT_DT CONSTANT '20120214',CELL_NAM,FULL_NAM,OTHER_NAM,OMC_CELL_NAM,GROUP_NAM,GROUP_NAM_EN
)
@H_301_0@
@H_301_0@文件请见附件TEST.csv,数据文件中某个字段的值内部有换行符,加载数据时,想保持数据原样,即数据入库后,数据里面保存有换行。此时可以通过"str '\r\n'"解决问题。
@H_301_0@如下所示,数据文件TEST.csv只有两行数据,每一条记录中第二个字段都存在换行。
@H_301_0@12,"这仅仅是
@H_301_0@测试"
@H_301_0@14,"数据有
@H_301_0@换行"
@H_301_0@
@H_301_0@sqlLDR默认输入的字段长度为255个字符。如果某个字段的字符长度超过255,而且你在控制文件里面,没有指定其字符长度,则会报下面错误:sql Loader- Field in data file exceeds maximum length
@H_301_0@sql*Loader-510 & sql*Loader-2026
@H_301_0@这个是我遇到的一个特殊例子,sqlLDR装载日志错误如下:
sql;">
sql*Loader-510: Physical record in data file (/jkfile/DAD_CDR/TEMP/201207/EDS.TW_CUST_COSTCELL_HR_07.dat) is longer than the maximum
(20971520)
sql*Loader-2026: the load was aborted because
sql Loader cannot continue.
@H_301_0@因为这个EDS.TW_CUST_COSTCELL_HR_07.dat文件37G,刚开始搜索了很多资料,也没有解决问题,其实最后发现时数据文件FTP拷贝传送时损坏的缘故。
@H_301_0@sql*Loader-605 & ORA-01653
sql;">
ORA-01653: unable to extend table tablename by 128 in tablespace xxxx
sql*Loader-605: Non-data dependent ORACLE error occurred -- load discontinued.
@H_301_0@出现这个错误是因为表所在表空间无法扩展,导致sql*LOADER装载数据无法插入。要给用户对应的表空间扩展空间