L'importation .csv avec colonne de type timestamp (jj.mm.aaaa hh.mm.ss) à l'aide de psql \copie
Je suis en train d'importer des données à partir d'un .fichier csv dans une base de données postgresql 9.2 à l'aide de la psql \COPY
de commande (pas de SQL COPIE).
L'entrée .fichier csv contient une colonne avec un horodatage dans le dd.mm.aaaa hh.mm.ss.
J'ai mis la base de données datestyle à DMY l'aide.
set datestyle 'ISO,DMY'
Malheureusement, lorsque je lance le \COPY
commande:
\COPY gc_test.trace(numpoint,easting,northing,altitude,numsats,pdop,timestamp_mes,duration,ttype,h_error,v_error)
FROM 'C:\data.csv' WITH DELIMITER ';' CSV HEADER ENCODING 'ISO 8859-1'
J'obtiens cette erreur:
ERREUR: le champ date/heure de valeur hors de la plage: "16.11.2012 07:10:06"
SUGGESTION: peut-être vous avez besoin d'un autre "datestyle".
CONTEXTE: COPIE de la trace, ligne 2, colonne timestamp_mes: "16.11.2012 07:10:06"
Quel est le problème avec le datestyle?
OriginalL'auteur jatobat | 2012-12-26
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le réglage de la
datestyle
de la serveur?Vous utilisez le psql méta-commande
\copy
, ce qui signifie que le fichier d'entrée est local sur le client. Mais c'est toujours le serveur qui a de forcer l'entrée de l'appariement entre les types de données.Plus généralement, à la différence de la psql méta-commande
\copy
qui invoqueCOPY
sur le serveur et est étroitement liée à elle .. je cite le manuel concernant\
:Ainsi, la modification de postgresql.conf est un moyen radical pour le faire. Vous pouvez aussi tapez simplement la commande SQL comme indiqué dans votre session avant de vous en cours d'exécution
\copy
. Le paramètre est alors seulement changé pour cette session.J'ai essayé tout à l'exécution de la
set datestyle = 'ISO, DMY';
commande SQL dans l'éditeur (avant de modifier le postgresql.fichier conf) et ensuite de l'exécution de la psql \copie, mais j'ai eu la même erreur que précédemment.C'est bizarre. J'ai effectivement testé et cela fonctionne pour moi sous PostgreSQL 9.1.6. Il a certainement doit travailler comme annoncé dans le 9.2 ainsi!
Ok, j'ai redémarré tout, réinitialiser le postgresql.conf pour la configuration d'origine de la norme iso,mdy'. Connecté au serveur. Couru
SET datestyle = 'ISO,DMY';
et puis l' \commande de copie. L'importation a bien fonctionné. Merci beaucoup pour votre aide.OriginalL'auteur Erwin Brandstetter
Je l'ai trouvé difficile à appliquer "SET datestyle" au sein de la même session, lors de l'application de la commande psql. Modifier la datestyle sur l'ensemble de la base de données/serveur (pour l'import) peut également causer des effets secondaires sur les autres utilisateurs ou les applications existantes. Donc j'ai l'habitude de modifier le fichier lui-même avant le chargement:
OriginalL'auteur homat
Le style de date vous semblent utiliser est l'allemand. PostgreSQL supporte ce style de date. Essayez d'utiliser ceci:
OriginalL'auteur Noel Cosgrave