У нас есть относительно большой объем производства на базе базы данных Postgres: ~ 20 ГБ. База данных PostgreSQL размещена на heroku.
Я хотел бы скопировать небольшое подмножество данных таблицы в мою локальную базу данных, чтобы я мог выполнить некоторые тесты на них без необходимости работать на производстве.
Я не хочу сам генерировать образцы данных, а использую данные, которые уже существуют в производственной среде.
~ 100 строк из каждой таблицы в базе данных будет достаточно. Есть ли простой способ сделать это?
postgresql
heroku
jottr
источник
источник
Ответы:
Я не использовал этот инструмент, но Jailer обещает сделать именно это
http://sourceforge.net/projects/jailer/
источник
Тюремщик может помочь в этой ситуации. Я работаю над тем же, что и у вас (пытаясь получить ~ 100 записей каждой таблицы), и вот шаги, которые я сделал: - Найти корневой объект (тот, который связан почти с таблицами) и получить подмножество записей корневая строка (например, root is people, тогда я буду искать все связанные записи с people.id = 1 ...) - После завершения шага 1 снова начните с другой таблицы (той, в которой вы хотели бы иметь 100 записей ) и получить его подмножество из результата выше.
источник
Другим вариантом является то , что я только недавно наткнулся ( как должное, я еще использовать его, но план в ближайшее время ):
rdbms-subsetter
.Это немного проще и легче, чем Jailer, с несколькими приятными особенностями / преимуществами:
Стоит упомянуть еще один вариант для баз данных Heroku, который я часто использовал (как я там работал).
На самом деле Heroku довольно быстро выводит на экран новую БД с моментальными снимками, поскольку сначала она готовит журналы упреждающей записи, затем подключается к основной БД, чтобы наверстать упущенное, а затем перестает следовать за ней. Вы можете создавать эти «вилки» в разных приложениях, чтобы не слишком сильно влиять на работу:
Затем вы можете загрузить приложение, локально указывающее на этот снимок. Я часто использую это, чтобы выполнить пробную миграцию данных или схем или отладить проблемы клиентов.
В приведенной выше команде, если у вас есть БД, доступная с помощью
DATABASE_URL
onyour-production-app
, вы получите БД, доступную сPRODUCTION_SNAPSHOT_URL
(если вы указали--as
) в другом приложении с именемsome-other-app-to-own-forked-database
.источник
Чтобы получить случайный набор строк, вы можете использовать LIMIT следующим образом:
Это самый простой способ, он просто выберет 100 первых строк, с которыми столкнулся PostreSQL. Это может быть 100 последних вставленных или, возможно, 100 первых. Если вам нужно что-то действительно случайное, посмотрите на этот ответ Stackoverflow .
источник
LIMIT
не справится с ссылками FK. Например: 100 строк из таблицы заказов могут содержать клиентов, которых нет при экспорте 100 строк из таблицы клиентов.