Oracle DatabaseでSQLclを使用する場合、SPOOL
を使用してクエリ結果をJSONファイルにエクスポートできます。 コマンド。
例
テーブル全体をエクスポートする例を次に示します。
SET SQLFORMAT json;
SPOOL '/Users/barney/data/regions.json';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;
行ごとに次のようになりました:
- 最初の行は
SQLFORMAT
を設定しますjson
へ 。これにより、結果の.json
が確実になります 実際、ファイルにはJSONが含まれています。または、json-formatted
を使用することもできます より人間に優しい形式でJSONを出力します(これについては後で詳しく説明します)。 - 2行目は
SPOOL
を使用しています 出力ファイルが書き込まれる場所を指定するコマンド。必ず/Users/barney/data/regions.json
を変更してください システム上の場所と適切なファイル名に移動します。 - 3行目で、SQLクエリを実行しました。これはエクスポートする結果です。この場合、
regions
全体をエクスポートしました テーブル。 - 次に、
SPOOL
に切り替えました オフ。 - 最後に、
SQLFORMAT
を設定しましたansiconsole
であった元の設定に戻します 。これはオプションです–json
のままにしておくことができます 必要に応じて、または別のものに変更してください。
結果のファイルは次のようになります。
{"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items": [ {"region_id":1,"region_name":"Europe"} ,{"region_id":2,"region_name":"Americas"} ,{"region_id":3,"region_name":"Asia"} ,{"region_id":4,"region_name":"Middle East and Africa"} ]}]} 4 rows selected.
前述のように、json-formatted
を使用するオプションもあります インデントなどを使用して、より人間にわかりやすい形式でJSONを出力します。この例をこの記事の最後に含めました。
フィードバックを削除
X rows selected
SET FEEDBACK off
を使用 :
SET SQLFORMAT json;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.json';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;
結果:
{"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items": [ {"region_id":1,"region_name":"Europe"} ,{"region_id":2,"region_name":"Americas"} ,{"region_id":3,"region_name":"Asia"} ,{"region_id":4,"region_name":"Middle East and Africa"} ]}]}
この場合、私はFEEDBACK
をオンにしました ファイルをエクスポートした後、元に戻します。
結果を追加
デフォルトでは、SPOOL
REPLACE
を使用します 、ファイルがすでに存在する場合はファイルを置き換えます。
ただし、APPEND
は使用できます 結果をファイルに追加するための引数。
例:
SET SQLFORMAT json;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.json' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;
結果のファイル:
{"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items": [ {"region_id":1,"region_name":"Europe"} ,{"region_id":2,"region_name":"Americas"} ,{"region_id":3,"region_name":"Asia"} ,{"region_id":4,"region_name":"Middle East and Africa"} ]}]} {"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items": [ {"region_id":1,"region_name":"Europe"} ,{"region_id":2,"region_name":"Americas"} ,{"region_id":3,"region_name":"Asia"} ,{"region_id":4,"region_name":"Middle East and Africa"} ]}]}
この例では、前の例で作成(および入力)されたファイルに結果を追加しました。これにより、クエリ出力がファイルに複製されました。
既存のファイルを上書きする
REPLACE
を使用できます 既存のファイルを新しいクエリの結果で上書きするには:
SET SQLFORMAT json;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.json' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;
結果のファイル:
{"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items": [ {"region_id":1,"region_name":"Europe"} ,{"region_id":2,"region_name":"Americas"} ,{"region_id":3,"region_name":"Asia"} ,{"region_id":4,"region_name":"Middle East and Africa"} ]}]}
前述のように、REPLACE
はデフォルト設定なので、この引数を完全に省略できたはずです。
フォーマットされたJSON
または、json-formatted
を使用することもできます より人間に優しい形式でJSONを出力するには:
SET SQLFORMAT json-formatted;
SPOOL '/Users/barney/data/regions_formatted.json';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;
結果:
{ "results" : [ { "columns" : [ { "name" : "REGION_ID", "type" : "NUMBER" }, { "name" : "REGION_NAME", "type" : "VARCHAR2" } ], "items" : [ { "region_id" : 1, "region_name" : "Europe" }, { "region_id" : 2, "region_name" : "Americas" }, { "region_id" : 3, "region_name" : "Asia" }, { "region_id" : 4, "region_name" : "Middle East and Africa" } ] } ] }