PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/05/2012 10:24:30

marcandre
Membre

Importation des nombres décimaux à virgule via COPY

Bonjour à tous,


J'ai une procédure stockée permettant d'importer un fichier CSV vers une table, via la commande COPY .

Seulement voilà le fichier CSV à importer peut contenir des nombres décimaux à virgule . Si c'est le cas, celà me génère une erreur de la façon suivante :


invalid input syntax for type real: "66,11"
CONTEXT:  COPY ma_table, line 2, column ma_colonne: "66,11"


Je souhaite savoir est ce qu'il y a un moyen de contourner ce problème de convertion de façon à remplacer les virgules par des points pour les nombres décimaux ?
J'utilise Postgres 8.4 .

En vous remerciant d'avance .
Cordialement .

Hors ligne

#2 15/05/2012 10:34:51

karthus
Membre

Re : Importation des nombres décimaux à virgule via COPY

Tu utilise un délimiteur quand tu fais un copy ma_table to ...? si ce n'est pas  le cas rajoute WITH DELIMITER ";"

Hors ligne

#3 15/05/2012 10:37:28

rjuju
Administrateur

Re : Importation des nombres décimaux à virgule via COPY

Bonjour,

Il n'y a pas de solution simple. Vous pouvez passer par une table temporaire et ensuite remplacer les , par des . et insérer dans la table finale.
Sinon, si vous avez la main sur la génération des csv vous pouvez corriger ce problème à la source.

Hors ligne

#4 15/05/2012 10:44:05

karthus
Membre

Re : Importation des nombres décimaux à virgule via COPY

Autant pour moi j'ai mal lu ><. Et avec un overlay(',' placing '.') ou quelque chose dans ce genre ?
Il me semble que dans mes cours sql il y a une autre fonction.

Dernière modification par karthus (15/05/2012 10:45:41)

Hors ligne

#5 15/05/2012 10:48:56

rjuju
Administrateur

Re : Importation des nombres décimaux à virgule via COPY

Il existe la fonction replace() qui pourrait aider à corriger le problème, mais ce n'est pas utilisable lors d'un copy, à moins de faire un trigger sur le(s) champs. Mais c'est un peu une solution extrême.

Dernière modification par rjuju (15/05/2012 10:49:04)

Hors ligne

#6 15/05/2012 11:30:26

Marc Cousin
Membre

Re : Importation des nombres décimaux à virgule via COPY

Oui, autant écrire une regexp qui convertit le fichier avant de l'importer. Mais ça devient un autre sport, même si c'est probablement le plus simple et le plus rapide.


Marc.

Hors ligne

Pied de page des forums