Как импортировать столбец jsonb из файла csv с помощью команды COPY? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь импортировать следующий CSV-файл в YugaByte DB YSQL. Обратите внимание, что вторая запись в каждой строке - это объект JSON.

"15-06-2018","{\"file_name\": \"myfile1\", \"remote_ip\": \"X.X.X.X\"}"
"15-06-2018","{\"file_name\": \"myfile2\", \"remote_ip\": \"Y.Y.Y.Y\"}"

Моя схема таблицы:

postgres=# create table downloads_raw (request_date text, payload jsonb);

Я хочу, чтобы фрагмент JSON в импортированном файле стал значением JSONB.

Я пытался сделать следующее:

postgres=# COPY downloads_raw FROM 'data.csv';

Нажав следующую ошибку:

ERROR:  22P04: missing data for column "payload"
CONTEXT:  COPY downloads_raw, line 1: ""15-06-2018","{\"file_name\": \"myfile1\", \"remote_ip\": \"X.X.X.X\"}""
LOCATION:  NextCopyFrom, copy.c:3443
Time: 2.439 ms

1 Ответ

1 голос
/ 09 июня 2019

Вам необходимо указать FORMAT csv и ESCAPE '\'.Кроме того, параметры формата и escape должны быть заключены в круглые скобки.Это должно работать:

COPY downloads_raw FROM 'data.csv' WITH (FORMAT csv, ESCAPE '\');

Список поддерживаемых опций для команды COPY можно найти здесь: https://docs.yugabyte.com/latest/api/ysql/commands/cmd_copy/

...