每当我将预处理器子句添加到外部表语句中时,我似乎遇到了问题。如果没有预处理器行,它一切正常,但只要我添加它,我得到什么样的错误取决于我把它放在访问参数块中,它们是否必须按特定顺序?我在网上找不到任何类似的问题。Oracle外部表中的预处理器
编辑:另外作为一个附注,我知道你可以使用预处理器将压缩文件送入外部表。如果我想读取一个压缩文件并追加文件名,就像把它全部放在一个shell文件中一样简单?
CREATE TABLE (
column1 VARCHAR2(40),
column2 VARCHAR2(40)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DMPDIR
ACCESS PARAMETERS(
RECORDS DELIMITED BY NEWLINE
LOGFILE DMPDIR:'test.log'
BADFILE DMPDIR:'test.bad'
fields terminated by '^'
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
preprocessor DMPDIR: 'append_filename.sh'
)
LOCATION (DMPDIR: 'testfile.dat')
);
append_filename.sh
#!/bin/bash
sed -e 's!$!,'"${1##*/}"'!' $1
是我们应该去猜测错误?我们应该猜测你的Oracle版本吗? – 2015-03-25 11:13:08
Oracle 11.2.0.3.0所以支持预处理器我相信。我可以给你这些错误,但这是一个不同的错误,这取决于我将预处理器语句移动到access_parameters块内的哪一行......所以我想知道是否需要某个顺序或者我做了一些明显错误的事情。 – 2015-03-25 11:16:21
我在回答中发布了一个示例。 – 2015-03-25 11:20:12