Re: Importation

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