#postgresql #amazon-web-services #csv #amazon-s3 #amazon-rds
#postgresql #amazon-веб-сервисы #csv #amazon-s3 #amazon-rds
Вопрос:
У меня возникла проблема с созданием таблицы в моей базе данных postgres в AWS RDS путем импорта необработанных данных csv. Вот несколько шагов, которые я уже сделал.
- CSV-файл был загружен в мою корзину S3
- Последовал руководству AWS, чтобы предоставить RDS разрешение на импорт данных из S3
- Создал пустую таблицу в postgres
- Пытался использовать функцию ‘import’ pgAdmin для импорта локального csv-файла в таблицу, но она продолжала выдавать мне ошибку.
Итак, я использую приведенный ниже запрос для импорта данных в таблицу:
SELECT aws_s3.table_import_from_s3(
'public.bayarea_property_data',
'',
'(FORMAT CSV, HEADER true)',
'cottage-prop-data',
'clean_ta_file_edit.csv',
'us-west-1'
);
Тем не менее, я продолжаю получать это сообщение:
ERROR: extra data after last expected column
CONTEXT: COPY bayarea_property_data, line 2: ",2009.0,2009.0,0.0,,0,2019,13061.0,,0,0.0,0.0,,2019,0.0,6767.0,576040,172810,403230,70,1,,1.0,,6081,..."
SQL statement "copy public.bayarea_property_data from '/rdsdbdata/extensions/aws_s3/amazon-s3-fifo-6261-20200819T083314Z-0' with (FORMAT CSV, HEADER true)"
SQL state: 22P04
Кто-нибудь может мне с этим помочь? Я новичок в AWS, поэтому последние несколько дней испытывал трудности. Спасибо!
Комментарии:
1. Откройте csv-файл в программе для работы с электронными таблицами. Судя по сообщению, в файле есть несколько строк с большим количеством полей, чем столбцов в таблице вашей базы данных. Убедитесь, что в вашей таблице правильное количество столбцов для приема всех строк из файла.
2. Спасибо за комментарий, Майк. Просто для ясности, означает ли это, что у меня уже должны быть все эти столбцы в моей таблице db? Опять же, таблица абсолютно пуста, и я просто не подумал, что разумно добавлять 300 столбцов, которые соответствуют столбцам в CSV. Есть ли другой обходной путь для этого?
3. В таблице должен быть столбец для каждого поля в файле. Я рекомендую использовать такие инструменты обработки текста, как
cut
(сначала сохраните его как разделитель табуляции) или напишите скрипт для выбора нужных столбцов.4. Это не только разумно, это то, что требует table_import_from_s3 . Либо вы указываете подмножество полей, соответствующих столбцам в таблице, либо создаете таблицу, содержащую все столбцы.
5. @ Mike Organek, @YongjoonKim. Некоторые инструменты, которые помогают в
CSV
некоторых аспектах: csvkit-csvcut , querycsv .