Скопируйте данные CSV & json из S3 в Redshift - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть данные, подобные приведенному ниже формату из корзины s3.

"2010-9","aws cloud","{"id":1,"name":"test"}"
"2010-9","aws cloud1","{"id":2,"name":"test2"}"

Я хочу скопировать данные в базу данных, как показано ниже.

Таблица

year   | env        | desc
2010-9 | aws cloud  |{"id":1,"name":"test"}
2010-9 | aws cloud1 |{"id":2,"name":"test2"}

У меня есть написал эту команду, но не работает. Не могли бы вы помочь мне?

copy table
from 's3://bucketname/manifest' credentials 'aws_access_key_id=xx;aws_secret_access_key=xxx'
delimiter ','
IGNOREHEADER 1
REMOVEQUOTES
IGNOREBLANKLINES
manifest;

1 Ответ

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

Вы почти на месте - вам просто нужно убрать двойные кавычки внутри 3-го поля (des c). По

If double-quotes are used to enclose fields, then a double-quote
       appearing inside a field must be escaped by preceding it with
       another double quote.  For example: "aaa","b""bb","ccc"

Это по РФ c -4180 - https://www.ietf.org/rfc/rfc4180.txt

Я также загрузил json в текстовое поле в Redshift а затем использовал функции json для разбора поля. Работает отлично.

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