Как извлечь json первый элемент массива в postgresql - PullRequest
0 голосов
/ 26 мая 2020

Tablename: -table_data_set, Columnname: -info

формат данных:

{
   "al_uri":"https://al/ma/np_6101",
   "parameters":[
      {
         "file_name":"QPR.AP6101_%Y%m%d",
         "input_format":"fixed",
         "output_format":"parquet",
         "delimiter":"None",
         "extension":".dat",
         "header":0,
         "footer":0,
         "date_pattern":"%Y%m%d%H%M%S",
         "type":"incremental"
      }
   ]
}

Как извлечь QPR.AP6101_%Y%m%d из массива. Пытался выполнить запрос ниже, но данные не возвращаются.

select name,info ->> 'al_uri' as URL,info -> 'parameters' ->> 'file_name' as filename 
from table_data_set;

1 Ответ

1 голос
/ 26 мая 2020

Оператор -> также имеет версию, в которой правый аргумент является целым числом, которое выберет соответствующий элемент массива.

Итак, вы хотите:

select name,
       info ->> 'al_uri' as URL,
       info -> 'parameters' -> 0 ->> 'file_name' as filename 
from table_data_set;

info -> 'parameters' -> 0 выбирает первые элементы массива из parameters

Немного более короткой версией является оператор #>>, который принимает путь к элементу:

input #>> '{parameters,0,file_name}' as file_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...