【问题标题】:External table using tab delimited file使用制表符分隔文件的外部表
【发布时间】:2017-10-19 15:42:03
【问题描述】:

我有一个包含制表符分隔数据的文件。类似于以下内容

id    f_name    l_name    m_name    dob        add_date  

100   john      smith     r         19880212   20161010  

102   micheal   ford                19920707   20161010  

我使用如下脚本通过external table加载数据

CREATE TABLE student_info(ID NUMBER, F_NAME VARCHAR2(200 BYTE),
    L_NAME VARCHAR2(200 BYTE),
    M_NAME VARCHAR2(200 BYTE),
    DOB DATE, ADD_DATE DATE) 
ORGANIZATION EXTERNAL(TYPE ORACLE_LOADER 
                      DEFAULT DIRECTORY DATA_FILE_DIR 
                      ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE 
                                   BADFILE bad_file_dir: 'STUDENT_COMP_INFO.bad'
                                   LOGFILE log_file_dir: 'STUDENT_COMP_INFO.log'
                                   SKIP 1 FIELDS TERMINATED BY 0X '09'
                                     OPTIONALLY ENCLOSED BY '"'
    LRTRIM MISSING FIELD VALUES ARE NULL) LOCATION(FILE_DIR: 'STUDENT_COMP_INFO.txt')) REJECT
LIMIT
UNLIMITED;

在数据中成功加载数据,但是当我从表中选择数据时,我得到以下输出。

SELECT * FROM STUDENT_INFO  

'ID'   'F_NAME'   'L_NAME'   'M_NAME'     'DOB'       'ADD_DATE'  

'100'  'john'     'smith'    'r'          '19880212'  '20161010'  

'102'  'micheal'  'ford'     '19920707'   '20161010'    

所以基本上它不会考虑Null 值。即使是Null,如何正确加载每个字段中的值?提前致谢。

【问题讨论】:

  • 请在每行代码/数据/错误消息的前面使用4个空格或突出显示一个文本块并使用编辑框左上角的{}格式工具格式化为代码/数据/输出。另外,请不要发布文本图像,这会使人们难以搜索和复制粘贴来帮助您。您的问题应该是自包含的,并且不需要用户访问外部站点来获取所有信息。祝你好运。

标签: sql oracle external-tables


【解决方案1】:

我经历了同样的行为。 (解决方法)解决方案是删除

OPTIONALLY ENCLOSED BY '"'

对我来说似乎是一个错误。至少有一个解决方法,您可以在第二步中删除封闭字符。

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多