Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2006, 16h27   #1
Invité régulier
 
Inscription : avril 2004
Messages : 53
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 53
Points : 7
Points : 7
Par défaut recuperation d'erreur en ligne de commande

Bonjour, je suis sur un projet BDD en PostGres (que je decouvre).

Mon probleme est que je genere un script d'insertion dans la base ( ~36000 requetes) et que sur ces 36000 requetes, a peut pres 1000 genere une erreur du a une contrainte de primary key ( et normalement ca devrait pas le faire )

Donc comme je travail en ligne de commande, pas moyen de voir quelles sont les requetes qui genere ces erreurs.

j'ai bien essayé
\o mon_fichier_res.txt
mais il n'y inscrit uniquement les insert qui ont fonctionné...

donc la je vois pas trop comment faire pour identifier les requetes problematiques...


Si quelqu'un a une idée je suis tout oui.

merci
stross est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 16h41   #2
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
si tu es sûr que tu n'as pas de problème avec l'intégrité référentielle, c'est qu'une table contenant une clé étrangère vers une seconde est créée en premier. Dans ce cas, je crois que tu as une option du genre DISABLE CONSTRAINTS; (à moins que ce ne soit en MySQL....bref je pense que c'est possible).

Sinon, ce que tu peux faire c'est d'éxécuter ton script en ligne de commande et de rediriger les messages d'erreur vers un fichier.
J'imagine que tu es en linux?
Code :
psql -f ton_fichier.sql >& erreur.log
enfin je crois, confirmation dans le public?
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 18h01   #3
Invité régulier
 
Inscription : avril 2004
Messages : 53
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 53
Points : 7
Points : 7
Citation:
si tu es sûr que tu n'as pas de problème avec l'intégrité référentielle, c'est qu'une table contenant une clé étrangère vers une seconde est créée en premier. Dans ce cas, je crois que tu as une option du genre DISABLE CONSTRAINTS; (à moins que ce ne soit en MySQL....bref je pense que c'est possible).
ici, j'ai pas de probleme de cles etrangeres, mon probleme est que je veux inserer une occurence dont la clé primaire existe deja ( donc je vais devoir transformer mon script qui créer les INSERT).

Je vais voir du coté de ton idee de faire ca en ligne de commande.
mais pour l'instant je me connect en faisant

psql nom_de_ma_base

dans ta ligne de commande, le nom de la base n'est pas précisé, mais je vais fouiller cette idée.(demain)

merci
stross est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 18h09   #4
Invité régulier
 
Inscription : avril 2004
Messages : 53
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 53
Points : 7
Points : 7
je viens de guetter le man de psql

Code :
psql -d ma_base -f mon_fichier >& erreur.log
sinon l'option qui redirige en sortie toutes les lignes en entrées.


celle ci doit pas etre suffisante, car equivalente au \o
Code :
1
2
3
4
5
-o filename
 
       --output filename
              Put  ALL  query  output INTO file filename. This IS
              equivalent TO the command \o.

bon avec ca je risque de trouver la solution.
je posterai demain pour dire ou j'en suis.

merci bien
stross est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2006, 23h34   #5
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
sinon tu peux spécifier dans ton fichier SQL la base sur laquelle tu veux travailler.
je n'ai pas le code sous les yeux mais je peux te dire demain matin....
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2006, 10h28   #6
Invité régulier
 
Inscription : avril 2004
Messages : 53
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 53
Points : 7
Points : 7
Code :
psql -d ma_base -f mon_fichier  -a >& erreur.log
cette solution marche bien, le -a est indispensable, il reinscrit a chaque fois la ligne en entrée, et le message d'erreur suit.

merci pour ton aide
stross est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web