Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да експортирате резултатите от заявката на Oracle в JSON файл, когато използвате SQLcl

Когато използвате SQLcl с Oracle Database, можете да експортирате резултатите от заявката си в JSON файл с SPOOL команда.

Пример

Ето пример, който експортира цяла таблица:

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

Ето какво направи, ред по ред:

  • Първият ред задава SQLFORMAT към json . Това гарантира, че нашият резултат .json файлът всъщност съдържа JSON. Като алтернатива можете да използвате json-formatted за да изведете JSON в по-удобен за хората формат (повече за това по-късно).
  • Вторият ред използва SPOOL команда, за да посочите къде ще бъде записан изходният файл. Не забравяйте да промените /Users/barney/data/regions.json до местоположение във вашата система и подходящо име на файл.
  • На третия ред изпълних 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"
        }
      ]
    }
  ]
}

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се свържа с база данни на Oracle в R?

  2. Как да изброите всички съхранени процедури в базата данни на Oracle

  3. Можем ли да актуализираме стойностите на първичния ключ на таблица?

  4. Oracle:Какво прави „(+)“ в клауза WHERE?

  5. Тъй като SQL Server няма пакети, какво правят програмистите, за да го заобиколят?