PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Administration d un base: dump, restore et inject de données » 03/02/2014 18:24:38

Les commandes pg_dump et restore ne sont pas adaptées à ce que je veux faire.
Cela devrait etre possible en SQL.
Merci pour votre aide

#2 Re : Général » Administration d un base: dump, restore et inject de données » 03/02/2014 10:50:21

Voici les fonctionnalités que je souhaite développer:
- faire un dump d une base de données contenant beaucoup de données
au vu de la taille important des donnees: extraire sous forme d un fichier .backup les données enregistrées dans une periode de temps

- faire un restore des donnees backupees
Injecter les donnees sans faire un clean au prealable


Le but etant lors de test manuels de pouvoir sauvegarder les donnees en base dans un .backup puis les restaurer dans une autre base pour pouvoir les exploiter/analyser.

#3 Re : Général » Administration d un base: dump, restore et inject de données » 30/01/2014 20:10:41

merci pour le lien. j ai trouve COPY apres avoir poste mon dernier message.
J ai egalement trouve quelque chose de tres insteressant si cela fonctionne avec pg dump

-- Backup recently updated tables based on auto analyze date
SELECT 'pg_dump ' || ' -h localhost -p 5432 -U postgres  -F c -b -v -f "/pgbak/somedb_keytbls.backup" ' ||
  array_to_string(ARRAY(SELECT '-t ' || schemaname || '.' || relname
        FROM pg_stat_user_tables
        WHERE last_autoanalyze > ( CURRENT_TIMESTAMP - (INTERVAL '1 day') )  )
    , ' ') || ' somedb'



Pernet d ajouter un filtre SQL au pg dump. l objectif est de ne pas dumper toute la base mais selon les donnees de la journee par exemple
Par contre je ne sais pas comment l adapter avec mon schema.
Je dois dump 5 tables et le filtre sur la date est a appliquer sur le timstamp de la view.
Dans cet exemple on ne selectionne qu une seule table alors que moi je veux pouvoir appliquer le filtre sur toutes mes tables.
si je fait un SELECT * FROM toutes mes tables le resultat sort sous forme d un seul tableau ?

#4 Re : Général » Administration d un base: dump, restore et inject de données » 30/01/2014 18:59:09

Peut on au moment du dump executer une filtre SQL. Par exemple:
recuperer les donnees dont la valeur est > X (je souhaite verifier les pk) ?
Merci d avance

#5 Re : Général » Administration d un base: dump, restore et inject de données » 30/01/2014 12:40:29

lors de l insert des donnees les PK sont incremetes automatiquement ?
Comment se fait il que le restore n ai pas une option pour faire de meme ? je precise que je fait un dump des data.
Le restore sans l option -c insert des data, cela veut alors dire que la commande ne gerer pas le cas ou il y a une PK identique (bug ou evolution ?)

#6 Re : Général » Administration d un base: dump, restore et inject de données » 30/01/2014 11:42:47

>> Si vous avez un soucis avec les PK, c'est que la table existe déjà et qu'elle contient des données.

merci d avoir pris le temps de repondre.
pg_restore permet d'insérer des données provenant d une autre base. le PK est incrémenté automatiquement.
lors de la restoration d un backup provenant d une autre base il se peut que les PK soient identique alors que les donnees ne le soient pas.
Je cherche une option ou une autre facon d'inserer/merger des donnees sans tenir compte des PK par l utilisation d un auto incremente comme lors d un insert

#7 Re : Général » Administration d un base: dump, restore et inject de données » 29/01/2014 19:23:15

dump des données:
/usr/bin/pg_dump --host=$HOST --username="$USERNAME" --role="$ROLE" --format=custom --blobs --section=data $VERBOSE --file="$FILE" $DATABASE -t "$TABLE1" -t "$TABLE2"



restore des données (injection sans clean TABLE1 avec primary key):
/usr/bin/pg_restore --host $HOST --username "$USERNAME" --dbname "$DATABASE" --role "$ROLE " $VERBOSE "$FILE"  -t "$TABLE1" -t "$TABLE2"

Merci pour votre aide

#8 Re : Général » Administration d un base: dump, restore et inject de données » 29/01/2014 17:45:42

je suis oblige de preciser car certaines tables ne doivent pas etre restaures
J ai un soucis avec l utilisation de pg_restore: lorsque je restore (insert data) j ai une erreur "DETAIL:  Key (grp_id)=(1) already exists "
Y a t il une option a utiliser au moment du dump ou du restore pour lui indiquer d incremeter les pk ?

#9 Re : Général » Administration d un base: dump, restore et inject de données » 28/01/2014 19:18:06

elles sont dans le premier post avec pour la selection des tables -t bale1 en plus. j utilise pg restore pour faire "l inject"

#10 Re : Général » Administration d un base: dump, restore et inject de données » 28/01/2014 10:54:30

pour le restore j utilise la commande pour une injection de data avec l option "-c" pour faire un clean avant.
Par contre dans le cas d un inject (sans clean donc) si une table est vide et qu il n y a rien a injecter la commande s arrete et n essaye pas d injecter les data sur dans les autres tables.
exemple avec table1 et backup vide, et table2 et backup avec data :

1/ backup des tables 1 et 2
2/ clean de la base
3/ inject -t table1 -t table2  a partir du backup 1/
l insert des data n est pas fait dans la table2 et en verbose je n ai pas de message d erreur

#11 Re : Général » Administration d un base: dump, restore et inject de données » 27/01/2014 16:30:40

Bonjour,

je n avais pas compris le fonctionnement de l option -t: -t table1 table2 ...
ca a l air de fonctionner, merci pour ton aide.
me reste l injection des donnees, as tu une idee ?

D avance merci

#12 Général » Administration d un base: dump, restore et inject de données » 27/01/2014 16:06:00

devjava83
Réponses : 22

Bonjour,

Dans le cadre d un projet utilisant une base de donnees PostgresSQL je dois creer un petit utilitaire permettant de faire:
- un dump des donnees (certaines tables)
- un restaure à partir du fichier dump (.backup)
- un injecte des donnés à partir du fichier dump (.backup)

Pour le dump et restore je n arrive pas a selectionner les tables qui m interressent et voici ce que j ai pour le moment (dump complet)
l option --table table1 table2 ... ne fonctionne pas

dump:
pg_dump --host=$HOST --username="$USERNAME" --role="$ROLE" --format=custom --blobs --section=data $VERBOSE --file="$FILE" $DATABASE

restore:
pg_restore --host $HOST --username "$USERNAME" --dbname "$DATABASE" --role "$ROLE" $VERBOSE "$FILE


pour l'inject je ne sais pas si il existe une méthode simple et generique pour injecter un jeux de données dans une base.


Y a t il des experts en base donnees qui auraient un script tout fait ;-) ou qui pourrait m aider ?


Merci d avance pour votre aide.

Pied de page des forums

Propulsé par FluxBB