J'écris un script shell (deviendra une tâche cron) qui:Postgres: base de données entière claire avant de recréer/repeupler à partir du script bash
1: vider ma base de données de production
2 : importer le vidage dans ma base de données de développement
Entre les étapes 1 et 2, j'ai besoin d'effacer la base de données de développement (supprimer tous les tableaux?). Comment cela est-il le mieux accompli à partir d'un script shell? Jusqu'à présent, il ressemble à ceci:
#!/bin/bash
time=`date '+%Y'-'%m'-'%d'`
# 1. export(dump) the current production database
pg_dump -U production_db_name > /backup/dir/backup-${time}.sql
# missing step: drop all tables from development database so it can be re-populated
# 2. load the backup into the development database
psql -U development_db_name < backup/dir/backup-${time}.sql
oneliner pour les gens pressés: 'dbname = 'nom_base' && dropdb $ dbname && createdb $ dbname && psql -d $ dbname -f dump.sql' – ruuter
ce oneliner vous oblige à avoir des autorisations pour créer/déposer la base de données. l'approche que l'auteur essaie ne nécessite pas de privilèges spéciaux. – ribamar