2017-02-27 2 views
0

.xlsxファイルをOracleデータベース表にロードしようとしています。私のコードに誤りがあります。私は通常このコードを.csvファイル用に使用しますが、.xlsx用に使用する必要があります。フィールド名、テーブル名などを編集しました これは可能ですか?.xlsxファイル用のOracleローダー

Drop TABLE Temp_Info; 
     CREATE TABLE Temp_Info 
          (
          Unique_Id varchar2(255) , 
          Name varchar2(255), 
          Alt_Name varchar2(255) 
          ) 
      ORGANIZATION EXTERNAL 
      ( 
       TYPE ORACLE_LOADER 
       DEFAULT DIRECTORY SEPA_FILES 
       ACCESS PARAMETERS 
       ( 
       records delimited by newline 
       skip 1 
       fields terminated by ',' 
       missing field values are null 
       ( 
        Unique ID -(filled automatically),Name,Alt Name 
       ) 
       ) 
       LOCATION ('Data_File.xlsx') 
      ) 
      REJECT LIMIT UNLIMITED; 

Select * From Temp_Info a;

Error Message: 9:16:55 ORA-29913: error in executing ODCIEXTTABLEOPEN callout 
9:16:55 ORA-29400: data cartridge error 
9:16:55 KUP-00554: error encountered while parsing access parameters 
9:16:55 KUP-01005: syntax error: found "identifier": expecting one of: "comma, char, date, defaultif, decimal, double, float, integer, (, nullif, oracle_date, oracle_number, position, raw, recnum,), unsigned, varrawc, varchar, varraw, varcharc, zoned" 
9:16:55 KUP-01008: the bad identifier was: ID 
9:16:55 KUP-01007: at line 6 column 30 
9:16:55 ORA-06512: at "SYS.ORACLE_LOADER", line 14 
9:16:55 ORA-06 
+0

それは.xlsx形式のファイルですか?私は実際にデータを残念ながら投稿できません(データプライバシー) –

+1

ああ、その '.xlsx'ファイル。このファイル形式はOracleではサポートされていないと思います。 '.csv'ファイルが必要です。 – JSapkota

+0

.xlsxの代替ソリューションはありますか? –

答えて

1

1)オプション[純粋なPL/SQL]

XLSX文書がXML文書のzip形式の集合です。拡張子xlsxを変更してzipし、解凍して内側にあるものを見つけることができます。 Hereは、oracle環境でxlsxドキュメントを処理する方法です。 このソリューションは機能しますが、実装は非常に苦痛です。

2)オプション(PL/SQL + apache POI) javaで実装を作成します。それをdbで使用します。

3)xlxsをcsvに変換します。

+0

ありがとう、オプション2を見てください。http://www.oracle.com/technetwork/articles/saternos-tables-090560.html batファイルのファイル名を変更することを知っています。あなたは添付されたフォルダのどこを変更する必要があるか知っていますか? –

+0

'load_dir AS 'C:\ workspaces \ test \ XL2ExternalTables''について質問していますか? –

0

ExcelTable SQLインターフェイス(免責事項:私は著者)です。
外部テーブルとして.xlsx(または.xlsm)ファイルへのアクセスを提供します。ここで

があなたのextテーブル定義に基づいて例を示します

SELECT t.* 
FROM TABLE(
     ExcelTable.getRows(
     ExcelTable.getFile('SEPA_FILES','Data_File.xlsx') 
     , 'Sheet_name_goes_here'  
     , ' "UNIQUE_ID" for ordinality 
     , "NAME"  varchar2(255) 
     , "ALT_NAME" varchar2(255) ' 
     , 'A2' 
     ) 
    ) t ; 

(私はUNIQUE_IDが自動生成されたシーケンスのいくつかの種類であると仮定)

関連する問題