AWS Redshift: как сохранить текстовое поле размером более 100 КБ - PullRequest
0 голосов
/ 03 января 2019

У меня есть текстовое поле в файле паркета с максимальной длиной 141598.Я загружаю файл партера в красное смещение и получил ошибку при загрузке, поскольку максимальное значение, которое может хранить varchar, составляет 65535.Есть ли какой-либо другой тип данных, который я могу использовать, или другой альтернативный вариант?

Ошибка при загрузке:

S3 Query Exception (Fetch). Task failed due to an internal error. The length of the data column friends is longer than the length defined in the table. Table: 65535, Data: 141598

1 Ответ

0 голосов
/ 03 января 2019

Нет, максимальная длина типа данных VARCHAR составляет 65535 байт, и это самый длинный тип данных, который Redshift способен хранить. Обратите внимание, что длина указана в байтах , а не в символах, поэтому фактическое количество сохраненных символов зависит от длины их байтов.

Если данные уже в формате паркета, то, возможно, вам вообще не нужно загружать эти данные в таблицу Redshift, вместо этого вы можете создать внешнюю таблицу Spectrum поверх нее. Определение внешней таблицы будет поддерживать только определение VARCHAR, равное 65535, то же самое, что и обычная таблица, и любой запрос к столбцу будет молча обрезать дополнительные символы сверх этой длины - однако исходные данные будут сохранены в файле паркета и потенциально доступны для другие средства, если это необходимо.

...