Обработка пустой строки при копировании из CSV-файла S3 в таблицу снежинок - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь загрузить CSV-файл с пути S3. Столкнулся с приведенными ниже ошибками

1) Uncaught Error: Numeri c значение не распознано. Эта ошибка вызвана тем, что значение NULL пытается загрузить в виде строки в столбце цифры c. Я нашел решение для этого и реализовал ниже:

create or replace file format test
type = 'CSV'
skip_header = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"'
NULL_IF=('');

Примечание: все работало нормально. Возможность хранения исходных данных (NULL)

2) Неопознанная ошибка: результат NULL в необнуляемом столбце. В исходном столбце есть пустая строка, которая является ненулевым столбцом. При загрузке пустой строки в снежинку она конвертируется в NULL и пытается загрузить, так как это не нулевой столбец в снежинке, она выдает ошибку. Для этого я попробовал следующий подход, который должен обрабатывать как NULL, так и пустую строку.

create or replace file format test
type = 'CSV'
skip_header = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"'
NULL_IF=('') EMPTY_FIELD_AS_NULL=false;

Но этот подход не работает, он работает для NULL, не работает для пустой строки.

Пожалуйста, дайте мне знать, как обрабатывать как пустую строку, так и значения NULL в снежинке.

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Попробуйте включить возможности формата нулевого значения в поле NULL_IF, разделенном запятой, как показано ниже:

type = csv 
RECORD_DELIMITER = '\n' 
FIELD_DELIMITER = ',' 
ERROR_ON_COLUMN_COUNT_MISMATCH = false 
FIELD_OPTIONALLY_ENCLOSED_BY = NONE 
skip_header = 0  
NULL_IF=('NULL','',' ','NULL','NULL','//N') 
empty_field_as_null = true

Также проверьте ваш ввод для ненулевых полей, которые не возвращают пустые значения.

Большое спасибо, Срига

0 голосов
/ 13 марта 2020
FIELD_OPTIONALLY_ENCLOSED_BY = '\042' 
ESCAPE = 'NONE' 
ESCAPE_UNENCLOSED_FIELD = '\134' 
NULL_IF = ('NULL');
...