sql >> Databáze >  >> RDS >> Oracle

Jak exportovat výsledky dotazů Oracle do souboru JSON při použití SQLcl

Při použití SQLcl s databází Oracle můžete exportovat výsledky dotazu do souboru JSON pomocí SPOOL příkaz.

Příklad

Zde je příklad exportu celé tabulky:

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

Tady je to, co to udělalo, řádek po řádku:

  • První řádek nastavuje SQLFORMAT do json . Tím je zajištěno, že výsledný .json soubor ve skutečnosti obsahuje JSON. Alternativně můžete použít json-formatted pro výstup JSON ve formátu přívětivějším pro člověka (více o tom později).
  • Druhý řádek používá SPOOL příkaz k určení, kam bude výstupní soubor zapsán. Nezapomeňte změnit /Users/barney/data/regions.json do umístění ve vašem systému a odpovídající název souboru.
  • Na třetím řádku jsem spustil SQL dotaz – výsledky, pro které exportuji. V tomto případě jsem exportoval celé regions stůl.
  • Dále jsem zapnul SPOOL vypnuto.
  • Nakonec jsem nastavil SQLFORMAT zpět k mému původnímu nastavení, což bylo ansiconsole . Toto je volitelné – můžete to nechat na json pokud chcete, nebo to změňte na něco jiného.

Takto vypadá výsledný soubor:

{"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. 

Jak již bylo zmíněno, máte také možnost použít json-formatted pro výstup JSON ve formátu, který je pro člověka přívětivější, s odsazením atd. Příklad jsem uvedl na konci tohoto článku.

Odebrat zpětnou vazbu

Můžete odstranit X rows selected s 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;

Výsledek:

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

V tomto případě jsem otočil FEEDBACK zpět po exportu souboru.

Připojit výsledky

Ve výchozím nastavení SPOOL používá REPLACE , který nahradí soubor, pokud již existuje.

Můžeme však použít APPEND argument pro připojení výsledků k souboru.

Příklad:

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;

Výsledný soubor:

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

Tento příklad připojil výsledky k souboru, který byl vytvořen (a naplněn) v předchozím příkladu. Výsledkem bylo duplikování výstupu dotazu v souboru.

Přepsat existující soubor

Můžeme použít REPLACE pro přepsání existujícího souboru výsledky nového dotazu:

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;

Výsledný soubor:

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

Jak již bylo zmíněno, REPLACE je výchozí nastavení, takže jsme tento argument mohli jednoduše vynechat.

Formátovaný JSON

Alternativně můžete použít json-formatted pro výstup JSON ve formátu přívětivějším pro člověka:

SET SQLFORMAT json-formatted;
SPOOL '/Users/barney/data/regions_formatted.json';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;

Výsledek:

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

  1. Oracle SQL, jak odstranit čas z data

  2. Jak přidám odkaz na konektor MySQL pro .NET?

  3. Naformátujte číslo jako procento v Oracle

  4. Načítání souborů .sql z PHP