Почему запрос Redshift UNLOAD не может правильно заключить в кавычки столбец? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующая строка в таблице хранилища AWS Redshift.

name               
-------------------
tokenauthserver2018

Это я запросил с помощью простого SELECT запроса

SELECT name
FROM tablename

Когда я пытаюсь выгрузить его с помощью UNLOAD запрос от AWS Redshift, он успешно завершается, но дает странное цитирование.

"name"
"tokenauthserver2018\

Вот мой запрос

UNLOAD ($TABLE_QUERY$
SELECT name
FROM tablename
$TABLE_QUERY$)
TO 's3://bucket/folder'
MANIFEST VERBOSE HEADER DELIMITER AS ',' 
NULL AS '' ESCAPE GZIP ADDQUOTES ALLOWOVERWRITE PARALLEL OFF;

Я также пытался выгрузить без ADDQUOTES, но получил следующееdata

name
"tokenauthserver2018

Это запрос выше.

UNLOAD ($TABLE_QUERY$
SELECT name
FROM tablename
$TABLE_QUERY$)
TO 's3://bucket/folder'
MANIFEST VERBOSE HEADER CSV NULL AS '' GZIP ALLOWOVERWRITE PARALLEL OFF;

1 Ответ

0 голосов
/ 13 июня 2019

Служба поддержки Amazon смогла решить эту проблему, я публикую ответ здесь для всех, кто заинтересован.

Это было связано с наличием в моих данных символа NULL \0. Поскольку у меня нет контроля над исходными данными, я использовал функцию TRANSLATE для замены \0 символа.

SELECT
TRANSLATE("name", CHR(0), '') AS "name"
FROM <tablename>

Ссылка: https://docs.aws.amazon.com/redshift/latest/dg/r_TRANSLATE.html

...