每当我将预处理器子句添加到我的外部表语句中时,我似乎遇到了问题。如果没有预处理器行,它一切正常,但是一旦我添加它,我就会得到各种错误,具体取决于我将它放在访问参数块中的位置,它们是否必须按特定顺序排列?我在网上找不到任何类似的问题。
编辑:另外作为旁注,我知道您可以使用预处理器将压缩文件提供给外部表。如果我想读取一个压缩文件并附加文件名,是否就像把它全部放在一个 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')
);
附加文件名.sh
#!/bin/bash
sed -e 's!$!,'"${1##*/}"'!' $1