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 Général » [postgresql 10] pg_restore: "check free disk space" » 16/04/2019 15:56:55

MissTi
Réponses : 1

Bonjour à tous,

Je ne suis pas encore une brutasse absolue sous postgreSQL et rencontre un écueil que je n'arrive pas à résoudre seule. C'est pas faute d'avoir essayé...

Je dois migrer une application et sa base de données d'un serveur à un autre. Après un pg_dump, je rebalance ma BD avec un pg_restore:

sudo -u postgres pg_dump --format c -d mabd > /home/user/backup/`date +%Y%m%d`_mabd.backup

==>

sudo su postgres
pg_restore -d mabd /home/user/backup/20190409_mabd.backup

Quand je fais le pg_dump/restore depuis une version light de la BD (ma version crash-test sur une machine virtuelle), ça passe les doigts dans le nez.
Quand je le fais depuis ma BD en production (donc un pg_dump de 4... Go!!), ça coince sur une table trèèèès lourde:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5867; 2606 41976 CONSTRAINT dem_vector pk_dem_vector utilisateurxx
pg_restore: [archiver (db)] could not execute query: ERROR: could not extend file "base/202593/224563": wrote only 4096 of 8192 bytes at block 89651
HINT: Check free disk space.
Command was: ALTER TABLE ONLY ref_geo.dem_vector
ADD CONSTRAINT pk_dem_vector PRIMARY KEY (gid);

Il semble quand même aller jusqu'au bout mais je n'ai pas de visibilité s'il y a eu des données "abandonnées" en route.

Côté serveur, j'ai 18Go/64 libres. Pour la mémoire "hôte", j'ai 8 Go. Je dois quand même avoir assez d'espace disque pour traiter un gros fichier, non?
Dans le postgresql.conf, j'ai essayé de modifier les paramètres effective_cache_size (ouvert à 4Gb) et work_mem (poussé à 10Mb) mais j'ai toujours le même message (j'ai lancé un service postgresql restart après avoir modifié le postgresql.conf).

Y a-t-il un moyen de contourner le bug?
Faut-il que j'opte pour un autre format d'export/import?
A noter qu'en plus des nombreuses tables, cette base contient des contraintes, des triggers, des vues matérialisées... Bref, la restaurer table par table puis contraintes, triggers, etc, ce serait l'enfer...

#2 Re : PgAdmin3 » Automatiser l'insertion de données » 16/01/2015 19:21:19

On m'a donné pour mission d'automatiser l'insertion des données sous PgAdmin /postgreSQL (contraintes imposées). N'ayant jamais utilisé ces outils/SGBD par le passé, j'apprends sur le tas.
Si l'utilisateur final saisi à la main l'adresse du fichier ainsi que les variables requises (directement dans le script), est-il possible d'écrire un script permettant de charger le fichier et d'enchainer les requêtes de répartition des données dans les tables? Une fonction?

#3 PgAdmin3 » Automatiser l'insertion de données » 16/01/2015 17:18:02

MissTi
Réponses : 3

Bonjour à tous,

Petit scarabée sur pgAdmin et postgreSQL, je cherche à automatiser l'insertion de fichiers de données préformattés (csv) dans une base de données.

Grosso merdo, voici l'idée globale du script:

    adresse du fichier ? ==> chargement du csv dans une nouvelle table
    programme de suivi? ==> stockage dans une variable. Maîtrise d'ouvrage? ==> stockage dans variable
    traitement du jeu de données pour vérifier que les infos existent bien dans les dictionnaires de données
    si tout est conforme aux dicos de données, répartir les infos dans différentes tables.
    si tout n'est pas conforme, créer une table de signalement des erreurs à corriger.



Dois-je créer une fonction? Une autre fonctionnalité de pgAdmin pourrait-elle me permettre de créer mon script ?
Est-il possible de demander l'adresse du fichier avec une fenêtre de saisie (voire une fenêtre "ouvrir un fichier" comme Windows)?
Est-il possible de présenter des fenêtres avec une liste déroulante pour demander un paramètre (item à choisir depuis l'une des tables)?
Je ne connais pas encore toutes les possibilités de pgAdmin. Bien que je ne sois pas experte sous pgAdmin ou postgreSQL, j'ai quelques notions en programmation donc vous pouvez y aller gaiement... (je vous demanderai aussi sûrement où trouver la doc...)

Merci d'avance...

Pied de page des forums

Propulsé par FluxBB