sql >> データベース >  >> RDS >> Oracle

SQLcl(Oracle)を使用する場合のクエリ結果のXMLファイルへのエクスポート

    Oracle DatabaseでSQLclを使用する場合、SPOOLを使用してクエリ結果をXMLファイルにエクスポートできます。 コマンド。

    デモンストレーションの例を次に示します。

    SET SQLFORMAT xml;
    SPOOL '/Users/barney/data/regions.xml';
    SELECT * FROM regions;
    SPOOL off;
    SET SQLFORMAT ansiconsole;

    行ごとに次のようになりました:

    • 最初の行はSQLFORMATを設定します xmlへ 。これにより、結果の.xmlが確実になります 実際、ファイルにはXMLが含まれています。
    • 2行目はSPOOLを使用しています 出力ファイルが書き込まれる場所を指定するコマンド。必ず/Users/barney/data/regions.xmlを変更してください システム上の場所と適切なファイル名に移動します。
    • 3行目で、SQLクエリを実行しました。これはエクスポートする結果です。この場合、regions全体をエクスポートしました テーブル。
    • 次に、SPOOLに切り替えました オフ。
    • 最後に、SQLFORMATを設定しました ansiconsoleであった元の設定に戻します 。これはオプションです– jsonのままにしておくことができます 必要に応じて、または別のものに変更してください。

    結果のファイルは次のようになります。

    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>
    4 rows selected. 
    
    

    フィードバックを削除

    X rows selected SET FEEDBACK offを使用 :

    SET SQLFORMAT xml;
    SET FEEDBACK off;
    SPOOL '/Users/barney/data/regions_feedback_off.xml';
    SELECT * FROM regions;
    SPOOL off;
    SET FEEDBACK on;
    SET SQLFORMAT ansiconsole;

    結果:

    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>
    

    この場合、私はFEEDBACKをオンにしました ファイルをエクスポートした後、元に戻します。

    結果を追加

    デフォルトでは、SPOOL REPLACEを使用します 、ファイルがすでに存在する場合はファイルを置き換えます。

    ただし、APPENDは使用できます 結果をファイルに追加するための引数。

    例:

    SET SQLFORMAT xml;
    SET FEEDBACK off;
    SPOOL '/Users/barney/data/regions_feedback_off.xml' APPEND;
    SELECT * FROM regions;
    SPOOL off;
    SET FEEDBACK on;
    SET SQLFORMAT ansiconsole;

    結果のファイル:

    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>
    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>
    

    この例では、前の例で作成(および入力)されたファイルに結果を追加しました。これにより、クエリ出力がファイルに複製されました。

    既存のファイルを上書きする

    REPLACEを使用できます 既存のファイルを新しいクエリの結果で上書きするには:

    SET SQLFORMAT xml;
    SET FEEDBACK off;
    SPOOL '/Users/barney/data/regions_feedback_off.xml' REPLACE;
    SELECT * FROM regions;
    SPOOL off;
    SET FEEDBACK on;
    SET SQLFORMAT ansiconsole;

    結果のファイル:

    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>
    

    前述のように、REPLACE はデフォルト設定なので、この引数を完全に省略できたはずです。


    1. Postgresデータベースを使用してJavaで非同期/イベント駆動型のLISTEN/NOTIFYサポートを取得するにはどうすればよいですか?

    2. SQL JOINとINのパフォーマンス?

    3. CSVをMySQLWorkbenchにインポートする方法

    4. postgreSQL --psql \ i:指定されたパスでスクリプトを実行する方法