2011-06-30 10 views
2

Oracle SQL Developerには、問合せ結果の内容を様々な形式(CSV /固定幅/ Excel/XML)にエクスポートするオプションがあります。それを自動化する方法はありますか?Oracle - データのエクスポート/アンロードの自動化

そうでない場合は、SQL Developerがエクスポートできるのと同じ形式にエクスポートを自動化するための、どのような無料ツールがありますか?

+0

特定非データベースでかなり強力なコマンドラインexportツールを持って、crontabファイルでスケジュールSQLPLUSから呼び出します。 – tbone

答えて

2

SQL Developerのエクスポートを自動化する方法はわかりません。

ただし、(UTL_FILEパッケージを使用して)PL/SQLからCSVファイルおよび/または固定幅ファイルを生成するのは簡単です。 Tom Kyteには、PL/SQLまたはPro * Cを使用したprograms that generate CSV or fixed width filesの例があります。どちらの方法も、あなたの好きなスケジューラを使って比較的簡単に自動化することができます。

XML出力は、実際に生成されるXMLに対して必要な制御の程度に応じて、ほとんど同じ方法で自動化できます。正当なXMLが必要なだけで、そのXMLのフォーマットを気にしない場合は、DBMS_XMLGEN packageを使用してこのようなことを行うことができます(この例はドキュメントの通りです)。

DECLARE 
    qryCtx DBMS_XMLGEN.ctxHandle; 
    result CLOB; 
BEGIN 
    qryCtx := DBMS_XMLGEN.newContext('SELECT * FROM hr.employees'); 
    -- Set the row header to be EMPLOYEE 
    DBMS_XMLGEN.setRowTag(qryCtx, 'EMPLOYEE'); 
    -- Get the result 
    result := DBMS_XMLGEN.getXML(qryCtx); 
    INSERT INTO temp_clob_tab VALUES(result); 
    --Close context 
    DBMS_XMLGEN.closeContext(qryCtx); 
END; 
/

その後、UTL_FILEを使用してファイルへresult CLOBを書き込むと、再び、それをスケジュールするためにあなたの好きなスケジューラを使用することができます。

Excelで開くことができるファイルを生成するだけであれば、おそらくCSVファイルまたはタブ区切りファイルを作成する必要があります。 Excelでは、どちらのタイプのファイルでも比較的簡単に開くことができますが、見つかった区切り文字(通常は区切り文字が正しく検出されます)を受け入れるよう求められます。

ネイティブExcel出力を生成するのはもう少し難しい作業です。 Jason Bennett's ExcelDoctypeUtilsのようなExcelファイルを生成するためのPL/SQL APIがあります。しかし、私はいつもJExcelAPIまたはそのApache POIのいずれかを使ってExcelファイルを生成するJavaストアドプロシージャを使いました。明らかに、実装するにはもう少し作業が必要です。 Excelファイルを書き込むことができるストアドプロシージャを他のオプションと同様に作成したら、お気に入りのスケジューラを使用してそのプロシージャを呼び出すことを自動化できます。

2

SQLワークベンチは、私は一般的に区切られたファイルをエクスポート用ストレートSQL SELECT文を使用し

+0

このツールは有望です。私は見てみましょう。 – tgxiii