Массовая загрузка AWS S3 в потоковую передачу Postgres STDIN - PullRequest
0 голосов
/ 30 мая 2018

Цель состоит в том, чтобы загрузить CSV из корзины s3 в таблицу в postgres в RDS.В поисках «лучших практик» я обнаружил, что AWS рекомендует их продукт «Data Pipeline».Они дают вам стартовый шаблон для массовой загрузки csv в rds mysql.Шаблон выглядит как на скриншоте ниже.Моя реакция: «Ух ты, все эти поля и стрелки только для загрузки CSV в таблицу?»

data pipeline

Поэтому мой вопрос: «Можем ли мы найтиболее простой подход к той же цели?Предположим, что моя корзина, моя база данных и бесплатный экземпляр T2.micro EC2 находятся в одном регионе.Предположим, что CLI AWS и клиент postgres установлены на EC2.

Я могу выполнить следующую команду, которая считывает CSV из корзины в стандартный вывод и передает поток в команду массовой загрузки postgres: aws s3 cp s3://mybucket/dummy.csv - | psql -d mydb -p 5432 -c "copy dummy(f1, f2) from stdin with(format csv);" ^^^Это работает для 50 МБ файлов!Кажется, он не требует значительного буфера памяти.Это не отображает прогресс.Будет ли этот подход работать для очень больших файлов 10 ГБ?100GB?так далее?Является ли это надежным или мне действительно нужно использовать продукт конвейера данных?

1 Ответ

0 голосов
/ 20 июля 2018

В итоге я использовал DMS для этого проекта с S3 в качестве источника и postgres в качестве цели.DMS ДОЛЖЕН быть составлен из сценариев, чтобы сделать процесс повторяемым и по требованию, что может потребовать участия, однако, если вам требуется время от времени загрузка данных, сценарий окупается с точки зрения получения согласованных результатов с портативного устройства.утилита

...