Lists: | pgsql-fr-generale |
---|
From: | BPascal <pascal62fr(at)free(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Importation |
Date: | 2008-09-17 15:03:48 |
Message-ID: | 48D11C54.1060402@free.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour,
Régulièrement j'aurais un fichier au format csv à incorporer dans une
table postgreSql.
Je peux développer un truc en PHP, mais il y a peut-être des outils
postgresql.
Il y a la documentation postgresql:
> sous psql
> COPY matable FROM '/repertoire/fichier.csv' WITH DELIMITER ';' ;
Puis pour les mises à jour:
> je te suggère d'utiliser une table temporaire.
> puis d'insérer les records absents de table principale.
C'est toujours la bonne façon de procéder?
A+
--
Pascal
From: | Jean-Paul Argudo <jean-paul(at)postgresqlfr(dot)org> |
---|---|
To: | BPascal <pascal62fr(at)free(dot)fr> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Importation |
Date: | 2008-09-17 15:17:20 |
Message-ID: | 48D11F80.8030701@postgresqlfr.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Hop,
> C'est toujours la bonne façon de procéder?
Je te conseille vivement pgLoader que Dimitri développe. Ça fait
exactement ce que tu cherches:
Charger des tables vides ou compléter des tables avec des données
existantes, en rejetant les tuples malformés ou déjà présents (il te
faudra donc t'assurer que dans tes fichiers tu as une clé (primaire?)
identique à une clé unique de la table (la clé primaire?) permettant
d'identifier les enregistrements de façon unique).
Tu dois tout d'abord LIRE ceci:
http://pgloader.projects.postgresql.org/
Le reste est là:
http://pgfoundry.org/projects/pgloader/
Si tu as des suggestions, tu peux joindre Dimitri de plein de façons. La
plus sympa c'est probablement de le "pinguer" sur l'irc:
serveur irc.freenode.net
channel #postgresqlfr
-> dim
a+
--
Jean-Paul Argudo
www.PostgreSQLFr.org
www.Dalibo.com
From: | Dimitri Fontaine <dfontaine(at)hi-media(dot)com> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Cc: | Jean-Paul Argudo <jean-paul(at)postgresqlfr(dot)org>, BPascal <pascal62fr(at)free(dot)fr> |
Subject: | Re: Importation |
Date: | 2008-09-18 09:01:53 |
Message-ID: | 200809181101.56262.dfontaine@hi-media.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour à tous,
Le mercredi 17 septembre 2008, Jean-Paul Argudo a écrit :
> Je te conseille vivement pgLoader que Dimitri développe. Ça fait
> exactement ce que tu cherches:
Ouais :)
> Charger des tables vides ou compléter des tables avec des données
> existantes, en rejetant les tuples malformés ou déjà présents (il te
> faudra donc t'assurer que dans tes fichiers tu as une clé (primaire?)
> identique à une clé unique de la table (la clé primaire?) permettant
> d'identifier les enregistrements de façon unique).
Je pense que si les lignes dupliquées ne sont pas exceptionnelles et surtout
ne sont pas considérés comme des ERREURS d'export, alors la bonne solution
est de passer par une table d'import et de faire les rapprochements en SQL.
On termine le chargement avec, au choix :
INSERT INTO dest
SELECT * FROM imp;
INSERT INTO dest
SELECT i.* FROM imp i LEFT JOIN dest d USING(x) WHERE d.x IS NULL;
Entre temps on peut faire un peu ce qu'on veut, en SQL, tout bien, youpi.
> Si tu as des suggestions, tu peux joindre Dimitri de plein de façons. La
> plus sympa c'est probablement de le "pinguer" sur l'irc:
> serveur irc.freenode.net channel #postgresqlfr user dim
Exact,
--
dim
From: | BPascal <pascal62fr(at)free(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Importation |
Date: | 2008-09-18 09:37:45 |
Message-ID: | 48D22169.7050408@free.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Dimitri Fontaine a écrit :
Hello Dimitri,
> Bonjour à tous,
>
> Le mercredi 17 septembre 2008, Jean-Paul Argudo a écrit :
>
>> Je te conseille vivement pgLoader que Dimitri développe. Ça fait
>> exactement ce que tu cherches:
>>
>
> Ouais :)
>
>
>> Si tu as des suggestions, tu peux joindre Dimitri de plein de façons. La
>> plus sympa c'est probablement de le "pinguer" sur l'irc:
>> serveur irc.freenode.net channel #postgresqlfr user dim
>>
>
> Exact,
>
I'm happy you speak French.
J'ai un peut peur que l'outil soit "trop" puissant pour ce que je dois
faire (il faut traduire par: j'ai peur de passer beaucoup de temps à
installer et comprendre comment utiliser l'outil). As tu une version
française de ta documentation.
A+
--
Pascal
From: | Sébastien Lardière <sebastien(at)lardiere(dot)net> |
---|---|
To: | Pgsql Fr Generale <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Importation |
Date: | 2008-09-18 10:22:09 |
Message-ID: | 48D22BD1.1040403@lardiere.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
BPascal a écrit :
>
> J'ai un peut peur que l'outil soit "trop" puissant pour ce que je dois
> faire (il faut traduire par: j'ai peur de passer beaucoup de temps à
> installer et comprendre comment utiliser l'outil). As tu une version
> française de ta documentation.
Une fois trouvée la bonne version de python, c'est finalement assez
simple Pgloader.
Bon, j'ai la doc, en francais, en chair et en os à disposition, ça doit
aider, mais quand même, c'est pas si compliqué ...
:)
--
Sébastien
From: | Dimitri Fontaine <dfontaine(at)hi-media(dot)com> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Cc: | BPascal <pascal62fr(at)free(dot)fr> |
Subject: | Re: Importation |
Date: | 2008-09-18 12:42:53 |
Message-ID: | 200809181442.55843.dfontaine@hi-media.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Le jeudi 18 septembre 2008, BPascal a écrit :
> I'm happy you speak French.
Je suis français, ça doit aider ;)
> J'ai un peut peur que l'outil soit "trop" puissant pour ce que je dois
> faire (il faut traduire par: j'ai peur de passer beaucoup de temps à
> installer et comprendre comment utiliser l'outil). As tu une version
> française de ta documentation.
Une fois parcouru rapidement la doc, regarde les examples et lance les. En
regardant le fichier de config des exemples et en lançant les commandes de
examples/README, ça devrait aller tout seul.
http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pgloader/pgloader/examples/
Et l'excuse habituelle « oh si je dois lire trois pages de doc autant le
recoder moi-même » entraîne rarement de bonnes choses. Si tu veux limiter le
coût de maintenance, il est très difficile de trouver mieux que de ne pas
écrire le logiciel du tout.
En espérant que ça aide,
--
dim
From: | BPascal <pascal62fr(at)free(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Importation |
Date: | 2008-09-18 14:11:39 |
Message-ID: | 48D2619B.1000609@free.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Dimitri Fontaine a écrit :
Bonjour,
> Une fois parcouru rapidement la doc, regarde les examples et lance les. En
> regardant le fichier de config des exemples et en lançant les commandes de
> examples/README, ça devrait aller tout seul.
> http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pgloader/pgloader/examples/
>
> En espérant que ça aide,
>
Oui tu m'aides.
J'ai lu le pgloader.conf et il ressemble à un "fichier de paramètres"
d'un programme C que j'avais utilisé.
Un exemple
Si j'ai la table Etablissement_tmp qui est vide
"IdEtablissement" integer NOT NULL DEFAULT nextval('"TEtablissement_IdTEablissement_seq"'::regclass),
"NomEtablissement" character varying(48),
"EtIdAmo" character varying(24),
"EtIdGroupeCharge" character varying(24),
"DateCreationEtablissement" timestamp without time zone,
"IdEtablissementCsv" integer,
Et , cas simple, j'ai un fichier etablissement.csv
NomDeLEtablissement1;groupe1;2008-09-01
NomDeLEtablissement2;groupe1;2008-09-01
cad les 2ème 4ème et 5ème champ de Etablissement_tmp
La partie import de table est dans ce cas:
[etablissement_tmp]
table = Etablissement_tmp
format = csv
filename = import/etablissement.csv
field_sep = ;
columns = a:2, b:4, c:5
Comme il y a le timestamp à convertir
columns = a:2, b:4, c:5
reformat = c:pgtime:time
C'est bon?
D'autre part, sur ma RHE j'ai:
Python 2.4.3 (#1, Jan 14 2008, 18:31:21)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
pgloader peut il utiliser cette version de python?
Comme il n'y a pas de rpm de pgloader pour (Red Hat 4.1.2-14),
l'installation risque de poser un certain nombre de problèmes.
As tu des retours d'expérience d'utilisateur sur RHE? "J'ai peur de
passer beaucoup de temps à installer pgloader".
A+
--
Pascal