1

叠花!

我在使用 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 环境中的屏幕截图:

http://img211.imageshack.us/img211/7535/error01i.png

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

4

1 回答 1

0

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

于 2012-11-08T12:06:41.517 回答