Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wyeksportować wyniki zapytania Oracle do pliku JSON przy użyciu SQLcl

Używając SQLcl z bazą danych Oracle, możesz wyeksportować wyniki zapytania do pliku JSON z SPOOL polecenie.

Przykład

Oto przykład, który eksportuje całą tabelę:

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

Oto, co zrobił, linia po linii:

  • Pierwszy wiersz ustawia SQLFORMAT do json-formatted . Gwarantuje to, że nasz wynikowy .json plik faktycznie zawiera JSON. Możesz alternatywnie użyć json-formatted aby wyprowadzić JSON w formacie bardziej przyjaznym dla człowieka (więcej o tym później).
  • Druga linia używa SPOOL polecenie, aby określić, gdzie zostanie zapisany plik wyjściowy. Pamiętaj, aby zmienić /Users/barney/data/regions.json do lokalizacji w systemie i odpowiedniej nazwy pliku.
  • W trzecim wierszu uruchomiłem zapytanie SQL – wyniki, dla których eksportuję. W tym przypadku wyeksportowałem całe regions stół.
  • Następnie zmieniłem SPOOL wyłączony.
  • Na koniec ustawiłem SQLFORMAT z powrotem do mojego pierwotnego ustawienia, którym było ansiconsole . Jest to opcjonalne – możesz zostawić go w json-formatted jeśli wolisz, lub zmień to na coś innego.

Oto jak wygląda wynikowy plik:

{"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 wspomniano, masz również możliwość korzystania z formatu json-formatted aby wyprowadzić JSON w bardziej przyjaznym dla człowieka formacie, z wcięciami itp. Przykład tego podałem na dole tego artykułu.

Usuń opinię

Możesz usunąć X rows selected z 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;

Wynik:

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

W tym przypadku włączyłem FEEDBACK ponownie po wyeksportowaniu pliku.

Dołącz wyniki

Domyślnie SPOOL używa REPLACE , który zastępuje plik, jeśli już istnieje.

Możemy jednak użyć APPEND argument, aby dołączyć wyniki do pliku.

Przykład:

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;

Wynikowy plik:

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

Ten przykład dołączył wyniki do pliku, który został utworzony (i wypełniony) w poprzednim przykładzie. Spowodowało to zduplikowanie wyników zapytania w pliku.

Zastąp istniejący plik

Możemy użyć REPLACE aby nadpisać istniejący plik wynikami nowego zapytania:

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;

Wynikowy plik:

{"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 wspomniano, REPLACE jest ustawieniem domyślnym, więc mogliśmy po prostu całkowicie pominąć ten argument.

Sformatowany JSON

Możesz alternatywnie użyć json-formatted aby wyprowadzić JSON w formacie bardziej przyjaznym dla człowieka:

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

Wynik:

{
  "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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołaj funkcję Oracle z Javy

  2. jak wybrać nawet rekordy z tabeli w oracle?

  3. Warunkowa SUMA na Oracle

  4. Funkcja SIN() w Oracle

  5. Dodaj znak waluty £, $ do niektórych pól ORACLE