Temos um db: ~ 20GB baseado em postgres de produção relativamente grande. O banco de dados PostgreSQL está hospedado no heroku.
Gostaria de copiar um pequeno subconjunto dos dados da tabela no meu banco de dados local para que eu possa executar alguns testes neles sem precisar trabalhar na produção.
Eu não quero gerar dados de amostra pessoalmente, mas usar os dados que já existem no ambiente de produção.
~ 100 linhas de cada tabela no banco de dados seriam suficientes. Existe uma maneira fácil de conseguir isso?
postgresql
heroku
jottr
fonte
fonte
Respostas:
Eu não usei essa ferramenta, mas Jailer promete fazer exatamente isso
http://sourceforge.net/projects/jailer/
fonte
O carcereiro pode ajudar nessa situação. Estou trabalhando no mesmo que o seu (tentando obter ~ 100 registros de cada tabela) e aqui estão as etapas que eu fiz: - Encontre a entidade raiz (a que está associada a quase tabelas) e obtenha um subconjunto dos registros de um linha raiz (por exemplo, raiz é pessoas, procurarei todos os registros relacionados a people.id = 1 ...) - Após concluir a etapa 1, inicie novamente com outra tabela (a que você gostaria que tivesse 100 registros ) e obtenha seu subconjunto do resultado acima.
fonte
Outra opção é algo que eu tenho apenas recentemente se deparar (concedido, ainda estou para usá-lo, mas plano para breve):
rdbms-subsetter
.É um pouco mais simples e mais leve que o Jailer, com alguns recursos / vantagens interessantes:
Vale mencionar outra opção especificamente para os bancos de dados Heroku, que usei bastante (como costumava trabalhar lá).
O Heroku é realmente muito rápido em criar um novo banco de dados com instantâneo, pois ele puxa os logs write-ahead primeiro para se preparar, depois se conecta ao banco de dados principal para recuperar o atraso e para de segui-lo. Você pode criar esses "garfos" nos aplicativos para evitar afetar demais a produção:
Em seguida, você pode inicializar seu aplicativo apontado localmente para esse instantâneo. Eu uso isso frequentemente para executar uma migração a seco de dados ou esquemas ou depurar problemas de clientes.
Nesse comando acima, se você tiver um banco de dados acessível com
DATABASE_URL
onyour-production-app
, você terminará com um banco de dados acessível comPRODUCTION_SNAPSHOT_URL
(se você especificou--as
) em um aplicativo diferente chamadosome-other-app-to-own-forked-database
.fonte
Para obter um conjunto aleatório de linhas, você pode usar LIMIT assim:
Este é o mais fácil e escolherá apenas as 100 primeiras linhas que o PostreSQL encontrou. Pode ser o último 100 inserido ou talvez o primeiro 100. Se você precisar de algo realmente aleatório, veja esta resposta do Stackoverflow .
fonte
LIMIT
não vai lidar com referências FK. Por exemplo: 100 linhas da tabela de pedidos podem conter clientes que não estão presentes ao exportar 100 linhas da tabela de clientes.