#1 Sat 01 August 2009 15:38
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
import d'un fichier txt dans postgres
Bonjour,
je souhaiterais importer un fichier txt dans une table postgres que j'ai créée avec la même structure et ce, grâce à la fonction COPY....FROM dont voici la syntaxe que j'ai utilisée:COPY commune FROM 'c:/temp/commune.txt' delimiter'"';
voici le message d'erreur retourné : ERROR: extra data after last expected column
État SQL :22P04
Contexte : COPY commune, line 1: ""insee","commune","statut","superficie","population","insee_cant","insee_arrond""
Avez une explication de ce message d'erreur?
Merci
Hors ligne
#2 Sat 01 August 2009 16:12
Re: import d'un fichier txt dans postgres
Bonjour,
Ton délimiteur est le symbol qui partage les colonnes, ici la virgule.
Code:
COPY commune FROM 'c:/temp/commune.txt' delimiter ',';
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Sat 01 August 2009 16:36
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
merci de la rapidité de la réponse
mon delimiter est un double cote ' " ' même en le mettant j'ai quand même le message d'erreur suivant ERROR: extra data after last expected column
État SQL :22P04
Contexte : COPY commune, line 1: ""insee","commune","statut","superficie","population","insee_cant","insee_arrond""
et si je ne mets pas de delimiter voici le message retourné
ERROR: value too long for type character(5)
État SQL :22001
Contexte : COPY commune, line 1, column insee: ""insee","commune","statut","superficie","population","insee_cant","insee_arrond""
Hors ligne
#4 Sat 01 August 2009 16:51
Re: import d'un fichier txt dans postgres
bonjour,
Peux tu poster les deux premières lignes de ton fichier txt ?
Merci,
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#5 Sat 01 August 2009 17:07
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
Merci Yves de ta réactivité et de ton aide,
voici les 2 premières lignes de mon txt :
"insee","commune","statut","superficie","population","insee_cant","insee_arrond"
"76001","ALLOUVILLE-BELLEFOSSE","6",1466,1000,"55","3"
Hors ligne
#6 Sat 01 August 2009 18:23
Re: import d'un fichier txt dans postgres
Donc je te confirme que le séparateur de champs est bien la virgule.
Par contre peux tu poster la structure de ta table commune ?
Il est possible que le nombre de champs ne soit pas le même entre cette table et celui du fichier texte.
Autre chose, il faut que tu supprimes la première ligne car ce n'est pas une données mais l'en-tête du fichier ou bien rajouter le paramètre HEADER à la fin.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Sat 01 August 2009 18:57
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
Voici la structure de la table dans postgres:
CREATE TABLE commune
(
insee character(5) NOT NULL,
commune character varying(50),
statut character(2),
superficie numeric(10,2)[],
population integer,
insee_cant character(2),
insee_arrond character(2),
CONSTRAINT pk_commune PRIMARY KEY (insee)
)
WITH OIDS;
ALTER TABLE commune OWNER TO postgres;
Hors ligne
#8 Sat 01 August 2009 19:45
Re: import d'un fichier txt dans postgres
Bonjour,
Ceci fonctionne chez moi :
Code:
CREATE TABLE commune ( insee character(5) NOT NULL, commune character varying(50), statut character(2), superficie numeric(10,2), population integer, insee_cant character(2), insee_arrond character(2), CONSTRAINT pk_commune PRIMARY KEY (insee) ) WITH OIDS; ALTER TABLE commune OWNER TO postgres; COPY commune FROM 'c:/temp/commune.txt' CSV HEADER;
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#9 Sat 01 August 2009 20:33
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
j'ai toujours le même message d'erreur que voici
ERROR: could not open file "c:/temp/commune.txt" for reading: No such file or directory
État SQL :58P01
je ne vais te fatiguer d'avantage, je te remerice beaucoup et te souhaite bon week-end
Dernière modification par diophamidou (Sat 01 August 2009 20:44)
Hors ligne
#10 Sat 01 August 2009 21:18
Re: import d'un fichier txt dans postgres
postgresql ne semble pas trouver le fichier, vérifie que le fichier est sur le serveur (et pas sur le PC client), que le chemin est correctement définie. Quitte à lancer un
Code:
dir c:/temp/commune.txt
dans une console dos.
Bon week-end,
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#11 Sat 01 August 2009 22:14
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
postgres est installé sur mon portable
Hors ligne
#12 Tue 08 September 2009 18:13
- diophamidou
- Participant assidu
- Date d'inscription: 18 Jan 2006
- Messages: 243
Re: import d'un fichier txt dans postgres
Bonjour, j'ai réussi à importer mes données txt dans postgres (c'était une table des communes), seulement lors de l'import j'ai aussi les doubles cotes qui sont importés. Ce qui fait que quand je fais une recherche sur une colonne alpha numérique (type code insee par exemple) il me faut aussi taper les doubles cotes. Comment peut-on ne pas importer les doubles cotes (") ou comment les supprimer?
Merci
Hors ligne
#13 Fri 16 July 2010 13:46
- nol2
- Juste Inscrit !
- Lieu: Bidart
- Date d'inscription: 4 Nov 2009
- Messages: 1
Re: import d'un fichier txt dans postgres
Bonjour,
j'ai un problème avec l'import d'un fichier txt, voici la construction de la table sous postgres :
CREATE TABLE phyto_substance_active
(
sa_code numeric,
sa_nom text NOT NULL,
sa_koc numeric,
sa_dt50 numeric,
sa_id serial NOT NULL,
CONSTRAINT "clé_substance_active" PRIMARY KEY (sa_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE phyto_substance_active OWNER TO postgres;
voici le code :
set client_encoding = 'WIN1252';
COPY phyto_substance_active FROM 'c:/territ_eau_data/phyto_substance_active.prn' delimiter '|';
le message d'erreur est le suivant :
ERREUR: syntaxe en entrée invalide pour le type numeric : « 1 1Pas de composition trouvée 0 0 »
CONTEXT: COPY phyto_substance_active, ligne 1, colonne sa_code : « 1 1Pas de composition trouvée 0 0 »
********** Erreur **********
État SQL :22P02
si quelqu'un à une idée puisque là j'ai essayé pas mal de modif' sans succès ...
merci et bne journée
[problème réglé...]
Dernière modification par nol2 (Fri 16 July 2010 14:05)
Hors ligne
#14 Fri 16 July 2010 15:56
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: import d'un fichier txt dans postgres
Bonjour,
j'ai un problème avec l'import d'un fichier txt, voici la construction de la table sous postgres :
CREATE TABLE phyto_substance_active
(
sa_code numeric,
sa_nom text NOT NULL,
sa_koc numeric,
sa_dt50 numeric,
sa_id serial NOT NULL,
CONSTRAINT "clé_substance_active" PRIMARY KEY (sa_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE phyto_substance_active OWNER TO postgres;
voici le code :
set client_encoding = 'WIN1252';
COPY phyto_substance_active FROM 'c:/territ_eau_data/phyto_substance_active.prn' delimiter '|';
le message d'erreur est le suivant :
ERREUR: syntaxe en entrée invalide pour le type numeric : « 1 1Pas de composition trouvée 0 0 »
CONTEXT: COPY phyto_substance_active, ligne 1, colonne sa_code : « 1 1Pas de composition trouvée 0 0 »
********** Erreur **********
État SQL :22P02
si quelqu'un à une idée puisque là j'ai essayé pas mal de modif' sans succès ...
merci et bne journée
[problème réglé...]
Bonjour,
Le format de la commande COPY FROM ne semble pas bon pour le fichier phyto_substance_active.prn:
la commande indique un delimiteur '|', mais le fichier semble contenir des espaces ou des tabulations, comme delimiteur:
« 1 1Pas de composition
Essayez de changer le delimiteur dans la commande COPY.
Nicolas
Hors ligne
#15 Fri 16 July 2010 16:01
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: import d'un fichier txt dans postgres
Bonjour,
j'ai un problème avec l'import d'un fichier txt, voici la construction de la table sous postgres :
CREATE TABLE phyto_substance_active
(
sa_code numeric,
sa_nom text NOT NULL,
sa_koc numeric,
sa_dt50 numeric,
sa_id serial NOT NULL,
CONSTRAINT "clé_substance_active" PRIMARY KEY (sa_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE phyto_substance_active OWNER TO postgres;
voici le code :
set client_encoding = 'WIN1252';
COPY phyto_substance_active FROM 'c:/territ_eau_data/phyto_substance_active.prn' delimiter '|';
le message d'erreur est le suivant :
ERREUR: syntaxe en entrée invalide pour le type numeric : « 1 1Pas de composition trouvée 0 0 »
CONTEXT: COPY phyto_substance_active, ligne 1, colonne sa_code : « 1 1Pas de composition trouvée 0 0 »
********** Erreur **********
État SQL :22P02
si quelqu'un à une idée puisque là j'ai essayé pas mal de modif' sans succès ...
merci et bne journée
[problème réglé...]
Hmm pardon, pas vu la derniere ligne...
Hors ligne
#16 Sat 17 July 2010 08:25
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3197
- Site web
Re: import d'un fichier txt dans postgres
Bonjour,
Hmm pardon, pas vu la derniere ligne...
Pas bien grave de ne pas avoir vu:
[problème réglé...]
Par contre une petite explication sur la solution du problème serait la bien venue, car cela pourrait servir à d'autres!
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne