Я пытаюсь выгрузить данные из Redshift в S3 в csv. Эти данные CSV затем преобразуются в сообщение json с необходимыми параметрами. Он хорошо работает с обычными столбцами данных, но если столбцы данных содержат разделители или специальные символы, то отображение неверно для сгенерированного файла CSV. Я использую '|' разделитель в команде выгрузки и если '|' разделитель входит в любую строку данных, тогда он портит csv. Например, если данные:
INSERT INTO my_schema.my_table (atr_id, atr_dt, atr_name, atr_array_name, atr_array_float, atr_array_bool) VALUES ('2987', '2015-06-28 05:07: 00.000 ',' name ',' ["| name1", "name2"] ',' [1.2, 1.3] ',' [true, false] ');
Команда выгрузки:
unload ('select * from my_schema.my_table') в 's3: // my-bucket / filename' iam_role 'arn: aws: iam :: 888555888: role / my-bucket- роль 'DELIMITER AS' | ' addquotes escape HEADER ALLOWOVERWRITE parallel off;
Затем создается csv:
atr_array_boolean | atr_array_float | atr_array_name | atr_dt | atr_id [true, false] | [1.2, 1.3] | ["| name1", "name2"] | 2015-06-28 05: 07: 00 | 1987
Как добавить дополнительные специальные символы для экранирования, а именно. {}, [], разделители , et c.? Так что после обработки этого CSV я получу точные данные, которые были там в столбцах.