Stackoverflowers!
我有一个 Oracle 数据库 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
不幸的是,我的生产环境是 Oracle Database 11g(相同版本),运行在 Linux 平台上。 当我使用相同的代码加载相同的文件 (abc.mtf) 时,这会导致一种奇怪的行为:字段被空格填充。我不知道为什么会发生这种情况,因为我的 Windows Server 2008 VM 上没有发生这种情况。
下面是相同数据在 Linux 环境下的截图:
有人可以帮助我在 Linux 环境下获得与在 Windows 上获得的输出相同的输出吗?预先感谢您的帮助!
最佳答案
问题可能是“records delimited by”子句没有考虑不同的行尾字符组合吗?默认的 NEWLINE 应该可以解决这个问题。
关于linux - Linux环境下Oracle External Tables字段解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273450/