Nous avons une base de données postgres de production relativement importante: ~ 20 Go. La base de données PostgreSQL est hébergée sur heroku.
Je voudrais copier un petit sous-ensemble des données de la table dans ma base de données locale afin de pouvoir exécuter des tests dessus sans avoir à travailler sur la production.
Je ne veux pas générer moi-même des exemples de données, mais plutôt utiliser les données qui existent déjà dans l'environnement de production.
~ 100 lignes de chaque table de la base de données seraient suffisantes. Y a-t-il un moyen facile d'accomplir cela?
postgresql
heroku
jottr
la source
la source
Réponses:
Je n'ai pas utilisé cet outil, mais Jailer promet de le faire
http://sourceforge.net/projects/jailer/
la source
Le geôlier peut aider dans cette situation. Je travaille sur le même que le vôtre (en essayant d'obtenir ~ 100 enregistrements de chaque table) et voici les étapes que j'ai faites: - Trouvez l'entité racine (celle qui est associée à presque les tables) et obtenez un sous-ensemble des enregistrements d'un racine (par exemple, racine est des personnes, je vais rechercher tous les enregistrements associés à people.id = 1 ...) - Après avoir terminé l'étape 1, recommencez avec une autre table (celle que vous souhaitez avoir 100 enregistrements ) et obtenir son sous-ensemble à partir du résultat ci-dessus.
la source
Une autre option est quelque chose que je viens de venir récemment à travers (Accordé, je suis encore à l' utiliser, mais plan pour bientôt):
rdbms-subsetter
.Il est un peu plus simple et plus léger que Jailer, avec quelques fonctionnalités / avantages:
Il convient de mentionner une autre option pour les bases de données Heroku en particulier, que j'ai beaucoup utilisée (car j'y travaillais auparavant).
Heroku est en fait assez rapide pour créer une nouvelle base de données instantanée car il tire d'abord les journaux d'écriture anticipée pour se préparer, puis se connecte à la base de données principale pour rattraper son retard, puis arrête de la suivre. Vous pouvez créer ces "fourches" dans les applications pour éviter d'affecter trop la production:
Ensuite, vous pouvez démarrer votre application localement pointée vers cet instantané. Je l'utilise fréquemment pour effectuer une migration à sec des données ou des migrations de schéma ou déboguer les problèmes des clients.
Dans cette commande ci-dessus, si vous avez une base de données accessible avec
DATABASE_URL
onyour-production-app
, vous vous retrouverez avec une base de données accessible avecPRODUCTION_SNAPSHOT_URL
(si vous avez spécifié--as
) sur une autre application nomméesome-other-app-to-own-forked-database
.la source
Pour obtenir un ensemble aléatoire de lignes, vous pouvez utiliser LIMIT comme ceci:
Ceci est le plus simple et ne fera que choisir les 100 premières lignes rencontrées par PostreSQL. Il peut s'agir des 100 derniers insérés ou peut-être des 100 premiers. Si vous avez besoin de quelque chose de vraiment aléatoire, regardez cette réponse Stackoverflow .
la source
LIMIT
ne traitera pas des références FK. Par exemple: 100 lignes de la table des commandes peuvent contenir des clients qui ne sont pas présents lors de l'exportation de 100 lignes de la table des clients.