Проблемы с копированием данных CSV с использованием параметра field_optionally_enclosed_by - PullRequest
0 голосов
/ 18 марта 2020

У меня есть двухстрочный CSV-файл ниже:

id, name, value1, alias, user, description, start_time, end_time
24,"quick brown fox, lazy dog",73.0,xyz,username,None,2020-03-16 12:00:00,2020-03-17 19:07:10

Файл уже находится в S3, и я успешно скопировал другие файлы, используя приведенную ниже команду. Проблема в том, что при копировании в снежинку команда прерывается Я думаю из-за второго поля, содержащего запятую. Я ищу помощь в устранении неполадок.

Таблица определена как:

id:int, 
name:text, 
value1:numeric, 
alias:text, 
user:text, 
description:text, 
start_time:timestamp, 
end_time:timestamp

А команда копирования в снежинку определена как:

COPY INTO schema.table FROM s3://bucket1/
files = ('filepath/filename.csv')
credentials =(aws_key_id='XXXXXXX' aws_secret_key='XXXXXXX')
file_format = (type = csv field_delimiter = ',' skip_header = 1
field_optionally_enclosed_by = '"' null_if = ('\N', 'None', 'nan'));

Запуск ее приводит к следующей ошибке:

Error: Number of columns in file (1) does not match that of the corresponding table (9), use file format option error_on_column_count_mistmatch=false to ignore this error

Я с нетерпением жду любых советов о том, как двигаться вперед. Спасибо!

1 Ответ

1 голос
/ 18 марта 2020

Ваш тестовый CSV имеет небольшую аномалию по сравнению с тем, как приложения записывают стандартный CSV Снежинке говорят, что поля могут быть заключены в двойные кавычки, но это не совсем верно.

С правой стороны ваш второй столбец заключен в двойные кавычки, а с левой стороны - в пробел и двойные кавычки.

Если вы попробуете с эти строки с удаленными пробелами (поскольку любое приложение, записывающее CSV, будет форматировать его без пробелов), оно должно работать для вас.

id,name,value1,alias,user,description,start_time,end_time
24,"quick brown fox, lazy dog",73.0,xyz,username,None,2020-03-16 12:00:00,2020-03-17 19:07:10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...