Загрузка данных CSV с NaN в AWS Redshift

Я пытаюсь загрузить CSV-файл из AWS S3 в AWS Redshift. CSV-файл содержит такую ​​строку:

15, NaN, 0

Таблица была создана с помощью:

СОЗДАТЬ ТАБЛИЦУ foo (a INT, b DOUBLE PRECISION, c INT);

И я пытаюсь загрузить таблицу с помощью команды COPY:

КОПИРОВАТЬ foo (a, b, c) ИЗ «s3: //» УЧЕТНЫЕ ДАННЫЕ ... CSV;

И я получаю сообщение об ошибке:

Недействительное цифровое значение "N"

Попытка загрузить ту же строку с помощью оператора INSERT вручную работает нормально:

ВСТАВИТЬ В foo (a, b, c) VALUES (15, 'NaN', 0);

Любая помощь приветствуется!


person Craig    schedule 15.05.2014    source источник


Ответы (1)


Вам нужно указать Redshift загружать NaN как NULL, если это то, что вы хотите сделать.

Например:

COPY foo from 's3://xxx' credentials 'xxxx' DELIMETER AS ',' NULL 'NaN';

Это должно выполняться успешно и вставлять в таблицу NULL вместо NaN.

person novabracket    schedule 19.05.2014
comment
Я действительно хотел загрузить его как NaN, а не как NULL (Redshift поддерживает конструкцию NaN для столбцов с двойной точностью), но похоже, что это невозможно из CSV? - person Craig; 22.05.2014