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"
}
]
}
]
}