如何使用 COPY 命令从 csv 文件导入 jsonb 列?

How can I import a jsonb column from a csv file using the COPY command?

我正在尝试将以下 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\"}"

我的 table 架构是:

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

您需要指定 FORMAT csv 和 ESCAPE '\'。此外,格式和转义选项需要用括号括起来。这应该有效:

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

可在此处找到 COPY 命令支持的选项列表: https://docs.yugabyte.com/latest/api/ysql/commands/cmd_copy/