1

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: ODCIEXTTABLEOPENコールアウトの実行中にエラーが発生しました
ORA-29400: データ・カートリッジ・エラー
KUP-04027:ファイル名のチェックに失敗しました: A:\job\job\FILENAME_1234_5566.log
4

3 に答える 3

4

KUP-04027:file name check failedファイルの場所が無効であることを意味します。

したがって、このファイル名を指定すると...

A:\job\job\FILENAME_1234_5566.log

...いくつかの考えが起こります:

  1. @jonearles が指摘しているように、A: は伝統的にフロッピー ディスク ドライブ用に予約されていました。データベース サーバー(つまり、データベースをホストするマシン) に A: ドライブがありますか? そうでない場合は、それを修正する必要があります。
  2. jobそのドライブには、サブディレクトリと呼ばれるルート ディレクトリが本当にありjobますか? それとも、DIRECTORY オブジェクトのパスのタイプミスfolder1ですか?
  3. また、サンプル コードでは、ファイル名を「FILENAME.csv」としています。明らかに、それはエラー メッセージのファイル名と一致しません。外部テーブル定義でファイル名に実際に指定するものは何ですか?
  4. KUP-04027ファイルの命名規則は各 OS に固有であるため、正確な原因はオペレーティング システムに固有です。私の推測では、あなたのデータベースは実際にはリモートの Unix サーバー上にあるのに、ローカルの Windows PC からファイルを読み込もうとしているのでしょう。それがあなたのシナリオである場合、それは機能しません。ファイルをデータベース サーバーにアップロードする必要があります。
于 2013-08-24T05:53:01.520 に答える