Re: Copy from : ERROR: date/time field value out of range

From: Eric Brison <eric(dot)brison(at)anakeen(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Copy from : ERROR: date/time field value out of range
Date: 2007-07-30 14:59:47
Message-ID: 46ADFCE3.6070300@anakeen.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

David Tokmatchi a écrit :
>
> Bonjour
>
> J'utilise Copy pour charger les données depuis un fichier plat dans
> une table dont voici la description :
>
> Column | Type | Modifiers
> -----------+-----------------------------+-----------
> to_ref | bigint | not null
> to_entity | character(40) | not null
> to_date | timestamp without time zone | not null
> to_time | timestamp without time zone | not null
> to_occ | text |
>
> La commande copy est la suivante :
>
> copy toto from '/tmp/x.dat' delimiters '~'
>
> dans mon fichier x.dat il y a les données suivants ( un million
> d'enregistrement ):
> ...
> 3454495~TQKQD ~12.03.2007 00:00:00~01.01.1900 17:35:26~
> 3454496~HHKKF ~12.03.2007 00:00:00~01.01.1900 17:35:34~
> 3454497~BBIIL ~12.03.2007 00:00:00~01.01.1900 17:35:39~
> 3454501~IKKFFS ~12.03.2007 00:00:00~01.01.1900 17:43:16~
> 3454502~ADJUSTMENT ~12.03.2007 00:00:00~01.01.1900 17:44:33~
> 3454503~ADJUSTMENT ~12.03.2007 00:00:00~01.01.1900 17:46:16~
> 3454504~ADJUSTMENT ~12.03.2007 00:00:00~01.01.1900 17:47:52~
> 3454517~TFFFR ~13.03.2007 00:00:00~01.01.1900 08:53:20~
> ...
>
> L'erreur est la suivante :
> ERROR: date/time field value out of range: "13.03.2007 00:00:00"
> HINT: Perhaps you need a different "datestyle" setting.
> CONTEXT: COPY toto, line 89846, column to_date: " 13.03.2007 00:00:00"
>
Le paramètre DateStyle de postgresql est par défaut MDY (Month Day Year)
Si dans la base de réception date style n'est pas en DMY (comme cela à
l'air d'être le cas) 13.03.2007 ne peut être valide.
Exemple pour les dates à la francaise :
-bash-3.2$ psql postgres
Bienvenue dans psql 8.2.4, l'interface interactive de PostgreSQL.

Tapez: \copyright pour les termes de distribution
\h pour l'aide-mémoire des commandes SQL
\? pour l'aide-mémoire des commandes psql
\g ou point-virgule en fin d'instruction pour exécuter la requête
\q pour quitter

postgres=# SHOW datestyle ;
DateStyle
-----------
ISO, DMY
(1 ligne)

Note : ce paramètre peut être modifié par un 'alter database'.

Sinon je pense que la notation iso8601 (YYYY-MM-DD) fonctionne quelque
soit le paramètre
postgres=# SELECT '2007-10-23'::timestamp;
timestamp
---------------------
2007-10-23 00:00:00

> Pour info la ligne 89846 correspond a la dernière ligne de mes données.
>
> Merci pour vos lumières
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Jean-Paul Argudo 2007-07-30 15:02:45 Re: Reponse lente de postgres
Previous Message Jean-Christophe Arnu 2007-07-30 14:59:24 Re: Copy from : ERROR: date/time field value out of range