问题描述
我有一个用逗号分隔的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);
我知道外部表可以识别以逗号结尾的每个字段,但是假设在文本文件中我有以下内容
TEST.txt
customer_id,customer_name,customer_number
1,a,10
2,b,11
3,c,12
4,Hello,Inc,13
对于txt文件中的第4行,由于customer_name字段中有一个附加的“,”,因此外部表无法正确将客户名读入表中。我有什么办法可以调整外部表,使其忽略其他“或”或任何特殊字符?
解决方法
据我所知,有两种方法可以做到:
- 可选地将字符串括入例如双引号
- 将分隔符从逗号更改为其他内容,例如分号
否则,无法将其“保持原样”并使Oracle识别哪个逗号代表什么。