Создание таблицы Postgres на AWS RDS с использованием CSV-файла

#postgresql #amazon-web-services #csv #amazon-s3 #amazon-rds

#postgresql #amazon-веб-сервисы #csv #amazon-s3 #amazon-rds

Вопрос:

У меня возникла проблема с созданием таблицы в моей базе данных postgres в AWS RDS путем импорта необработанных данных csv. Вот несколько шагов, которые я уже сделал.

  1. CSV-файл был загружен в мою корзину S3
  2. Последовал руководству AWS, чтобы предоставить RDS разрешение на импорт данных из S3
  3. Создал пустую таблицу в postgres
  4. Пытался использовать функцию ‘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 .