Oracle 11g中的外部表存在问题。我目前正在使用DB Artisan来运行我的查询。 CREATE和ORGANIZATION代码成功执行,但是当我运行select语句时,我收到错误。我的.csv文件的设置方式与EXTERNAL_TABLE的布局相同,标题也是如此。
CREATE TABLE EXTERNAL_TABLE
(
COL1 NUMBER(14),
COL2 VARCHAR2(10),
COL3 VARCHAR2(3),
COL4 VARCHAR2(3),
COL4 VARCHAR2(4),
COL6 NUMBER(4,0),
COL7 VARCHAR2(20),
COL8 VARCHAR2(20),
COL9 NUMBER(3)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY FOLDER1
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(COL1 CHAR(14),
COL2 CHAR(10),
COL3 CHAR(3),
COL4 CHAR(3),
COL4 CHAR(4),
COL6 CHAR(4),
COL7 CHAR(20),
COL8 CHAR(20),
COL9 CHAR(3)
)
)
LOCATION ('FILENAME.csv') --Name of flat file.
)
REJECT LIMIT 0;
运行:
SELECT * FROM EXTERNAL_TABLE
给出了这个错误:
ORA-29913:error in executing ODCIEXTTABLEOPEN callout ORA-29400:data cartridge error KUP-04027:file name check failed: A:\job\job\FILENAME_1234_5566.log
答案 0 :(得分:4)
KUP-04027:file name check failed
表示文件位置无效。
所以,给定这个文件名......
A:\job\job\FILENAME_1234_5566.log
......出现了几个想法:
job
的根目录,其子目录名为job
?或者这是你的DIRECTORY对象folder1
的路径中的拼写错误?KUP-04027
的确切原因是特定于操作系统的,因为文件命名约定是每个操作系统所特有的。我的猜测是你的数据库确实驻留在远程Unix服务器上,但你正在尝试从本地Windows PC读取文件。如果这是您的方案,它将无法工作:您需要将文件上传到数据库服务器。答案 1 :(得分:1)
好的,很久以前就问了这个问题,但我最近自己也遇到过这个问题。
问题是数据Oracle外部表不完全支持引用远程网络位置的硬链接 我做的工作是创建一个专门使用UNC路径的目录对象(例如' \ remoteserver \ proxy'指向远程网络位置。这对我来说神奇地起作用。
答案 2 :(得分:0)
如果您在RAC中并且文件位于ACFS内部,则使用:
DISABLE_DIRECTORY_LINK_CHECK
修复它!
请参阅https://www.realdbamagic.com/using-external-table-windows-rac-acfs/