【问题标题】:External Table Help - Problem with FIELDS TERMINATED BY ',' if additional comma exists in a value in the field外部表帮助 - 如果字段中的值中存在附加逗号,则 FIELDS TERMINATED BY ',' 出现问题
【发布时间】:2020-08-18 20:13:05
【问题描述】:

我有一个逗号分隔的 txt 文件,我正在使用外部表来加载下面的数据:

create table test_ext_table
     CUSTOMER_ID NUMBER, 
     CUSTOMER_NAME       VARCHAR2(255),  
     CUSTOMER_NUMBER     NUMBER)  
     ORGANIZATION EXTERNAL 
    ( type oracle_loader 
      default directory TXT_DIR 
      access parameters 
      (RECORDS delimited by newline SKIP 1 
      FIELDS TERMINATED BY ','
       LRTRIM 
       MISSING FIELD VALUES ARE NULL 
      ) 
      LOCATION (TEST.txt)
      )
      REJECT LIMIT UNLIMITED);

我知道外部表可以识别以逗号结尾的每个字段,但假设在文本文件中我有以下内容

测试.txt

customer_id, customer_name, customer_number
1,a,10
2,b,11
3,c,12
4,Hello, Inc,13

对于 txt 文件中的第 4 行,由于 customer_name 字段中有一个额外的“,”,因此外部表无法正确将客户名称读入表中。有没有办法让我调整外部表,使其忽略额外的“,”或任何特殊字符?

【问题讨论】:

  • DBMS 应该如何猜测哪个逗号是对的,哪个是错的?如果逗号出现在文本中,那么逗号就不是合适的分隔符。选择另一个。

标签: oracle external-tables


【解决方案1】:

据我所知,有两种方法可以做到这一点:

  • 可选地将字符串包含在例如双引号
  • 将分隔符从逗号更改为其他内容,例如分号

否则,无法保持“原样”并让 Oracle 识别哪个逗号代表什么。

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2021-03-24
    • 1970-01-01
    • 2011-03-05
    • 2018-01-10
    • 1970-01-01
    • 2019-12-08
    • 2011-04-30
    • 2011-09-20
    相关资源
    最近更新 更多