pg_bench=# select name, setting from pg_settings where name ~* 'lc';
name | setting
-------------+-------------
lc_collate | en_US.UTF-8
lc_ctype | en_US.UTF-8
lc_messages | en_US.UTF-8
lc_monetary | en_US.UTF-8
lc_numeric | en_US.UTF-8
lc_time | en_US.UTF-8
(6 rows)
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
>
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq