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 07/08/2007, 08h48   #1
Membre actif
 
Avatar de Empty_body
 
Inscription : mai 2004
Messages : 679
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 679
Points : 186
Points : 186
Par défaut Requète pour dumper une ligne

Salut,

Je vais sans doute poser une question ridicule mais j'aimerais savoir si il est possible, via une query d'obtenir le dump d'une ligne précise d'une table. Je sais que le dump peut prendre pour cible une DB ou une table mais est-il possible de faire une query qui cible une ligne d'une table et qui retourne un truc genre
Code :
INSERT INTO matable (...) VALUES (...);Si quelqu'un voit une piste, je l'en remercie.

Au passage, J'avais posté ceci dans le forum langage SQL mais lorsque j'ai précisé que mon SGBD est postgres, on m'a conseillé de cloturer et de reposter...
__________________
Pourquoi vouloir ré-inventer la roue...
...Surtout si c'est pour la faire carrée...
Empty_body est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 09h27   #2
Membre actif
 
Avatar de Empty_body
 
Inscription : mai 2004
Messages : 679
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 679
Points : 186
Points : 186
J'ai pensé à un truc genre :

Code :
1
2
SELECT 'INSERT INTO table(champ1,champ2,champ3) VALUES ('||champ1||','||champ2||','||champ3||');' 
AS query FROM TABLE WHERE champ1 = 2;
Le champ 2 est un boolean, je ne sais pas trop comment faire pour le caster et lui permettre d'incorporer la chaîne. Pour le moment, je la caste en int mais je ne sais pas comment faire pour lui dire que 1 = afficher true. Autre problème, si l'un des champs est null, le résultat retourné est vide, quelqu'un sait comment résoudre ces problèmes?
__________________
Pourquoi vouloir ré-inventer la roue...
...Surtout si c'est pour la faire carrée...
Empty_body est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 09h52   #3
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Bonjour,

je vois tout a fait ce que tu veux faire,
je pense qu'il faudrait que tu te cree une petite procedure stockée, pour prendre en compte tout type de table.

sinon pour ton pb de null, utilise coalesce :

Code :
1
2
3
 
SELECT 'INSERT INTO table(champ1,champ2,champ3) VALUES ('||coalesce(champ1,'NULL')||','||coalesce(champ2,'NULL')||','||coalesce(champ3,'NULL')||');' 
AS query FROM TABLE WHERE champ1 = 2;
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 09h55   #4
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
pour le boolean, et c'est valable pour d'autre type tu peux utiliser CASE WHEN

genre
Code :
1
2
 
CASE champ2 WHEN true THEN 'true' WHEN false THEN 'false' ELSE 'NULL' END
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h15   #5
Membre actif
 
Avatar de Empty_body
 
Inscription : mai 2004
Messages : 679
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 679
Points : 186
Points : 186
J'avais trouvé la solution du CASE WHEN mais le coalesce est plus court et peut être plus propre que le CASE WHEN champ1 is null THEN ' ' ELSE champ1 END.

hpalpha...
__________________
Pourquoi vouloir ré-inventer la roue...
...Surtout si c'est pour la faire carrée...
Empty_body 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 08h43.


 
 
 
 
Partenaires

Hébergement Web