Как читать данные таблицы строка за строкой postgres дБ с помощью сценария оболочки - PullRequest
0 голосов
/ 09 апреля 2020

Как читать данные таблицы строка за строкой postgres дБ с помощью сценария оболочки.

Я попробовал это:

psql -d db_name -t -c "SELECT * FROM table_name" | while read -a Record ; do
echo $Record[0]
echo $Record[1]
done

, но это приложение дает мне такие данные:

Apple
|

Почему это | происходит, когда я выбираю только данные строки.

На самом деле я хочу создать json объекты из данных таблицы БД. в формате:

column-name : value,
column-name : value
..... ; 

Что-то в этом роде

Table name -> student

Fields :
id : string
name : string
age : int
inSchool : boolean

Table data : 

ID   Name   Age  inSchool
1    Amit   18    Yes
2    Sunil  21    No
3    Anil   17    Yes

Вывод, который я хочу:

[
{
   id : 1,
   name : Amit,
   age : 18,
   inSchool : 1;
}, 
{
   id : 2,
   name : Sunil,
   age : 21,
   inSchool : 0;
}, 
{
   id : 3,
   name : Anil,
   age : 17,
   inSchool : 1;
}
]

Если есть какой-либо хороший способ, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 апреля 2020

Пусть Postgres выполнит агрегацию и буферизирует вывод в файл после отключения форматирования заголовка:

postgres=> \t
Tuples only is on.
postgres=> \o data.json
postgres=> select jsonb_agg(to_jsonb(s)) from student s;

Или в одну строку:

psql -d db_name -t -c "select jsonb_agg(to_jsonb(s)) from student s" -o data.json

После этого данные файла. json будет содержать всю таблицу в виде огромного JSON массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...