【问题标题】:Oracle External Tables field parsing on Linux environmentLinux 环境下的 Oracle 外部表字段解析
【发布时间】:2012-11-07 16:02:47
【问题描述】:

叠花!

我在使用 Oracle Database 11g 实例时遇到问题,其中我有一个外部表映射来自外部文件的数据。

这是我在开发 Windows Server 2008 R2 x64 虚拟机上运行的代码:

CREATE TABLE ABC (
    NAMECREDORPART1 CHAR(50 CHAR), 
    NAMECREDORPART2 CHAR(50 CHAR), 
    NAMECREDORPART3 CHAR(50 CHAR), 
    ADDRESSCREDORPART1 CHAR(50 CHAR),
    (...)
   ) 
   ORGANIZATION EXTERNAL (
        TYPE ORACLE_LOADER
        DEFAULT DIRECTORY FILES
        ACCESS PARAMETERS (
            records delimited by '\n' CHARACTERSET 'WE8ISO8859P15'
            LOAD WHEN (documento != blanks)
            FIELDS
            MISSING FIELD VALUES ARE NULL
            REJECT ROWS WITH ALL NULL FIELDS (
               NAMECREDORPART1 position(1:49) char(50),
               NAMECREDORPART2 position(50:99) char(50),       
               NAMECREDORPART3 position(100:149) char(50),
               ADDRESSCREDORPART1 position(150:199) char(50),
               (...)
            )
        )
        LOCATION ('abc.mtf')
    )
PARALLEL
NOMONITORING
REJECT LIMIT UNLIMITED;

此代码导致以下数据被加载/映射到此 ABC 表上: 这正是我希望我的数据加载的方式! :D

不幸的是,我的生产环境是在 Linux 平台上运行的 Oracle Database 11g(相同版本)。 当我使用相同的代码加载相同的文件 (abc.mtf) 时,这会导致奇怪的行为:字段被空格填充。我不知道为什么会发生这种情况,因为我的 Windows Server 2008 VM 上没有发生这种情况。

这是相同数据在 Linux 环境中的屏幕截图:

有人可以帮我在 Linux 环境下获得与在 Windows 上获得的输出相同的输出吗?提前感谢您的帮助!

【问题讨论】:

    标签: linux parsing oracle11g external-tables


    【解决方案1】:

    问题可能是“记录分隔”子句没有考虑不同的行尾字符组合吗?默认的 NEWLINE 应该会处理这个问题。

    【讨论】:

    • 感谢您的回复。我已经尝试删除这些行“由'\n' CHARACTERSET 'WE8ISO8859P15'分隔的记录”和“加载时间(文档!=空白)”,但它没有效果。它仍然使用空格加载数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2017-11-04
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多