У меня есть приложение ruby on rails, размещенное на heroku, используя postgresql в качестве его базы данных. Поскольку база данных становится довольно большой, мне было интересно, есть ли способ загрузить только определенную часть ее с героку. Например, можно загрузить только одну конкретную таблицу или загрузить только строки с parent_id == x.Загрузить частичную базу данных от heroku
ответ
В дополнение к совершенно правильный ответ Стива, у вас также есть возможность подключения с помощью psql
к DATABASE_URL
и используя \copy
, например,
$ psql "$(heroku config:get DATABASE_URL)"
mydb=> \copy mytable TO 'mytable.csv' WITH (FORMAT CSV, HEADER)
mydb=> \copy (SELECT col1, col2 FROM mytable2 WHERE ...) TO 'mytable2_partial.csv' WITH (FORMAT CSV, HEADER)
Вы можете извлечь целые таблицы или выходные данные произвольных запросов (включая объединения и т. Д.). Определение таблицы (DDL) не экспортируется таким образом, но может быть сброшено с pg_dump --schema-only -t ...
.
Используя настройку конфигурации DATABASE_URL
, вы можете использовать pg_dump
для доступа к своей базе данных и использовать переключатель -t
, чтобы указать определенную таблицу.
Например, чтобы экспортировать таблицу my_table
в файл с именем db.sql
:
pg_dump -t my_table `heroku config:get DATABASE_URL` > db.sql
Если необходимо ограничить загрузку в определенные строки, то я не думаю, что pg_dump
будет делать эту работу на своем собственном. Вы можете создать другую таблицу в своей базе данных Heroku, чтобы сначала определить подмножество строк, которые вы хотите загрузить, а затем указать pg_dump
дамп только этой таблицы. Смотрите этот вопрос для некоторых идей о том, как сделать это: Export specific rows from a PostgreSQL table as INSERT SQL script
Итак, если я правильно понимаю это, я создаю конкретные таблицы экспорта в базе данных Heroku, а затем загружаю их с помощью pg_dump? Есть ли способ написать какой-то скрипт, чтобы все это сделать? Я в основном хочу, чтобы иметь возможность запускать скрипт, который будет работать на heroku, создавать различные экспортируемые файлы, которые мне нужны, а затем загружать их. – Robert
@Robert вы можете написать сценарий для запуска на Heroku для экспорта требуемых данных. Вы могли бы запустить сценарий с планировщика Heroku, если хотите, чтобы он запускался регулярно и загружал эти дампы на S3. Если вам просто нужен одноразовый скрипт, вероятно, лучше всего написать что-то, чтобы запускаться локально с помощью вашего локального pg-клиента, как предлагает Крейг. – Steve
- 1. Загрузить базу данных sqlite из Heroku
- 2. Загрузить частичную библиотеку классов
- 3. Как загрузить частичную форму?
- 4. Загрузить базу данных PG в виде файла из Heroku
- 5. Загрузить и открыть сжатую базу данных SQLite3 на Heroku
- 6. Как загрузить частичную часть частичного?
- 7. Как сбросить базу данных heroku?
- 8. Heroku - Как зашифровать базу данных
- 9. Как удалить базу данных в heroku clearDB?
- 10. Загрузить базу данных без Cpanel
- 11. Как запустить патч/частичную базу данных UPDATE в Scala Slick?
- 12. Как Heroku или Rails настраивают базу данных?
- 13. не удалось сбросить базу данных heroku
- 14. Drive API - Загрузить/загрузить базу данных sql
- 15. PHP загрузить в базу данных
- 16. Загрузить базу данных в cpanel
- 17. Загрузить файл в базу данных
- 18. Как загрузить базу данных (php)?
- 19. Загрузить другую базу данных Symfony2
- 20. Загрузить изображения в базу данных
- 21. Загрузить изображение в базу данных
- 22. Не удалось обновить базу данных heroku
- 23. Скопировать производственную базу данных в стадию heroku
- 24. Глядя на базу данных по heroku
- 25. Heroku: обновить базу данных для Phoenix
- 26. Программно сменить базу данных для heroku dataclips
- 27. Как я могу просмотреть базу данных Heroku?
- 28. Джанго удалось перенести базу данных на Heroku
- 29. Как переименовать базу данных postgres в heroku
- 30. Импорт CSV в базу данных Heroku
Есть ли способ, которым я мог бы поместить все это в какой-то скрипт (часто буду делать это «выборочное резервное копирование»)? А также, поскольку я буду получать несколько таблиц, есть ли способ получить их все в каком-то файле .dump (вместо .csv), поэтому его легче импортировать? – Robert
@Robert Конечно. Любой скриптовый язык будет делать, если вы хотите вызывать 'psql' из оболочки. Или вы можете использовать копию 'copy' Ruby' pg' '' 'COPY ... TO STDOUT' вместо использования' psql' и '\ copy'; существуют существующие ответы о том, как «КОПИРОВАТЬ» непосредственно из «Pg' gem в Ruby. –