首页 > 数据库 >SQL*LOADER错误总结

SQL*LOADER错误总结

时间:2022-09-05 16:59:36浏览次数:91  
标签:总结 ALM ERROR Loader SQL DATE LOADER ID

copy自:SQL*LOADER错误总结

在使用SQL*LOADER装载数据时,由于平面文件的多样化和数据格式问题总会遇到形形色色的一些小问题,下面是工作中累积、整理记录的遇到的一些形形色色错误。希望能对大家有些用处。(今天突然看到自己以前整理的这些资料,于是稍稍整理、归纳成这篇博客,后面如果碰到其他案例,会陆陆续续补充在此篇文章。)

 ERROR 1:SQL*LOADER装载数据成功,但是发现某些字段的中文为乱码,这个是因为编码缘故造成乱码。可在控制文件中添加字符集编码参数解决问题,

例如:CHARACTERSET 'ZHS16GBK' 或 CHARACTERSET 'UTF8',根据数据库实际情况设置数据库字符集。

CHARACTERSET 'ZHS16GBK' 
APPEND INTO TABLE ETL.TEST
(
CITY_ID         ,
GPRS_USER_CNT   ,
BRAND_ID        ,
CELL_NAM       
ERROR 2装载数据时,报ORA-01722:
 invalid 
number错误(不是数据类型错误造成的一般错误。而是最后一个字段为NUMBER类型时,会报上述错误)因为换行符的问题,如果NUMBER类型的列位于表的最后,最后其实会有换行符(如果为\n,不会出错,
 
如果为\r\n,则会报错),在用SQLLDR导入时会把换行符也算作那个数字的一部分,从而出错。解决办法加INTEGER或者加“TERMINATED
 BY WHITESPACE”。

 

Record 1: Rejected - Error on table DM.TM_WGGHF_CELL_USER_DAY, column TYPE_ID.

ORA-01722: invalid number

注意:如果数据字段类型是NUMBER类型,则用INTEGER会导致装载的数据异常,99.875000 会变成一个很大的整数。

 

ERROR 3装载数据时,由于里面有日期字段,需要添加日期函数处理特定格式的数据类型。否则会出现错乱格式

 

 

FIELDS TERMINATED BY  '@#$' TRAILING NULLCOLS
COLLECT_DT                        ,
HR_CD                             ,
COLLET_TYPE_ID                    ,
"TO_DATE(:ALM_TM,'DD-MM-YYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=American')"             ,
"TO_DATE(:ALM_DISCOVER_TM, 'DD-MM-YYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=American')"   ,
ALM_RESUME_TM         "TO_DATE(:ALM_RESUME_TM, 'DD-MM-YYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=American')"     ,
FP3_ALM_FINGMARK                  ,
VSEQUIP_NAM                       ,
VSEQUIP_SUBSTATUS_ID              ,
"TO_DATE(:PLAN_DISPH_TM, 'DD-MM-YYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=American')"      ,
EMOS_RECORD_CNT                   ,
ALM_CNT                
ERROR 4 如果数据文件里面缺少某些字段,可以在控制文件中添加常量参数,例如下面缺少COLLECT_DT这个字段的数据(其实是根据数据文件以及某些参数生成的),可以通过CONSTANT常量参数解决。

 

 

CHARACTERSET 'UTF8'
"str '\r\n'"
FIELDS TERMINATED BY ','
(
'20120214',             
        CELL_NAM                        ,
        OTHER_NAM                       ,
        GROUP_NAM                       ,
)

 

ERROR 5 如果换行是WINDOW平台的格式(即\r\n, LINUX平台是以\n),如下图所示(用vi编辑器查看)

image

 

 

clip_image002

 

 

INFILE 'EDS.TW_BUSS_GN_CELLFLUX_HR4.csv'  "str '\r\n'"
FIELDS TERMINATED BY  ','  TRAILING NULLCOLS
       DATE_CD          ,
       LAC_ID           ,
       BUSI_TYP1_CD     ,
       CITY_ID          ,
       UP_FLUX          ,
       VSD_CNT          ,
)

 

 

ERROR 6 数据文件请见附件TEST.csv,数据文件中某个字段的值内部有换行符,加载数据时,想保持数据原样,即数据入库后,数据里面保存有换行。此时可以通过"str '\r\n'"解决问题。

如下所示,数据文件TEST.csv只有两行数据,每一条记录中第二个字段都存在换行。

 

 

12,"这仅仅是

测试"

14,"数据有

换行"

 

 

 

LOAD DATA
INFILE 'TEST.csv' "str '\r\n'"
APPEND INTO TABLE TEST
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(
ID     ,
NAME  
)

 

ERROR 7 : 字段长度超过255

 

SQLLDR默认输入的字段长度为255个字符。如果某个字段的字符长度超过255,而且你在控制文件里面,没有指定其字符长度,则会报下面错误:SQL Loader- Field in data file exceeds maximum length

 

ERROR 8 : SQL*Loader-510 & SQL*Loader-2026

这个是我遇到的一个特殊例子,SQLLDR装载日志错误如下:

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.

因为这个EDS.TW_CUST_COSTCELL_HR_07.dat文件37G,刚开始搜索了很多资料,也没有解决问题,其实最后发现时数据文件FTP拷贝传送时损坏的缘故。

 

ERROR 9:SQL*Loader-605 & ORA-01653

ORA-01653: unable to extend table tablename by 128 in tablespace xxxx

SQL*Loader-605: Non-data dependent ORACLE error occurred -- load discontinued.

出现这个错误是因为表所在表空间无法扩展,导致SQL*LOADER装载数据无法插入。要给用户对应的表空间扩展空间

标签:总结,ALM,ERROR,Loader,SQL,DATE,LOADER,ID
From: https://www.cnblogs.com/zouhong/p/16658732.html

相关文章

  • 使用Navicat将excel数据导入SQL Server数据库
    新建一张表,点击“导入”选择“Excel文件”选择要导入的sheet页将EXCEL的列名和表的名字对应起来......
  • 47. SQL--克隆表(复制表)
    1.前言在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用createtable命令创建一张新表,然后使用select命令从旧表中选取所有数......
  • PostgreSQL-数据类型1
    一、数字类型整数类型:SQL仅指定整数类型integer(或int)、smallint和bigint。类型名称int2、int4和int8是扩展,其他一些SQL数据库系统也使用它们。数值类型num......
  • 48. SQL--子查询(嵌套查询)
    1.前言子查询也称“内部查询”或者“嵌套查询”,是指将一个select查询(子查询)的结果作为另一个sql语句(主查询)的数据来源或者判断条件。子查询可以嵌入select、insert......
  • 45. SQL--事务(非常详细)
    1.前言在数据库中,我们将一条sql语句称为一次基本的操作。将若干条sql语句“打包”在一起,共同执行一个完整的任务,这就是事务。事务(transaction)由一次或者多次基本操......
  • sql语法:inner join on, left join on, right join on详细使用方法
    sql语法:innerjoinon,leftjoinon,rightjoinon详细使用方法 innerjoin(等值连接)只返回两个表中联结字段相等的行leftjoin(左联接)返回包括左表中的所有......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构师SpringCloud-Gateway
    目录SpringCloudGateway的工作流程Gateway动态路由配置中基于Path的路由方式过滤器分类常见默认过滤器添加响应头前缀处理增加前缀自定义过滤器1、实现GatewayFilter接口2......
  • E10——常用函数——SqlValidate
    Context.SqlValidate(“SQL语句”,参数列表,参数值列表)举例:工单单头“生产批号”字段在维护的时候校验是否存在工单状态是未生产,已发料,生产中的工单引用过该生产批号,如果......
  • Oracle查看锁表sql写法
    --查看锁表进程SQL语句1:selectsess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefrom......
  • Redis总结
    Redis底层数据结构当数据量小,通过数组实现的压缩数据结构用下标访问更快;当数据量大,维护数组的元数据占用空间随之增长,所以使用普通存储redis支持<string,valu......