暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle外部表-字段终止于子句

askTom 2017-05-09
249

问题描述

我有一个具有以下记录格式的平面文件:

2017-05-01 17:12:28 ÿAuth_Referralÿ71631ÿ6803448.70

请注意,字段9月是一个小y,上面有两个点。这是windows扩展ascii for FF或255。我无法将该字符指定为我的字段终结符,如下所示,但是如果我使用普通分隔符,例如 “|”,则可以正常工作:

这很好:

(CREATE_DATE DATE,
 TABLE_NAME VARCHAR2(30),
 RECORD_COUNT VARCHAR2(10),
 TOTAL_AMOUNT NUMBER(10,2))           

 ORGANIZATION external
(TYPE oracle_loader

  DEFAULT DIRECTORY data_dir
  ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE 
  BADFILE 'authsmry.bad'
 LOGFILE 'authsmry.log'
 READSIZE 1048576
 FIELDS TERMINATED BY '|' LRTRIM
 REJECT ROWS WITH ALL NULL FIELDS

  (CREATE_DATE CHAR(19) date_format DATE 'yyyy-mm-dd-HH24.MI.SS',
   TABLE_NAME CHAR(30),
   RECORD_COUNT CHAR(10),
   TOTAL_AMOUNT CHAR(13))
  )
  location
  ('authsmry') 
)REJECT LIMIT UNLIMITED;
复制


但是当我尝试用 “起” 终止的字段时
或由0X'FF' 终止的字段
或由0X' 255 '终止的字段

等等。它不会识别场终结者。

我一直在寻找解决此问题的方法,包括在您的数据库中,但没有喜悦。

请帮忙,

问候,

加里


专家解答

字符根据字符集的不同,有不同的编码!

https://www.compart.com/en/unicode/U+00FF

在访问参数中显式指定字符集,它应该工作:

create table t (
 CREATE_DATE varchar2(19),
 TABLE_NAME VARCHAR2(30),
 RECORD_COUNT VARCHAR2(10),
 TOTAL_AMOUNT NUMBER(10,2)
) ORGANIZATION external
(TYPE oracle_loader
  DEFAULT DIRECTORY tmp
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE 
    CHARACTERSET 'UTF8'
    FIELDS TERMINATED BY 'ÿ' LRTRIM
    REJECT ROWS WITH ALL NULL FIELDS (
      CREATE_DATE CHAR(19) ,
      TABLE_NAME CHAR(30),
      RECORD_COUNT CHAR(10),
      TOTAL_AMOUNT CHAR(13)
    )
 )
  location ('test.txt') 
) REJECT LIMIT UNLIMITED;

select * from t;

CREATE_DATE          TABLE_NAME     RECORD_COUNT  TOTAL_AMOUNT  
2017-05-01 17:12:28  Auth_Referral  71631         6,803,448.7  
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论