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 20/02/2020 17:06:44

Gaël44
Membre

ERREUR: syntaxe en entrée invalide pour le type date

Bonjour,

Voilà j'ai des gros fichiers à importer dans une base de donnée. donc j'ai créé la table correspondant au fichier et je commence l'import avec cette commande :
CREATE TABLE "STAT2019" ();
... (autres champs définis)
ALTER TABLE "STAT2019" ADD COLUMN S19_Date_T date;      ALTER TABLE "STAT2019" ALTER COLUMN S19_Date_T SET NOT NULL;
... (autres champs définis)
copy "STAT2019" FROM 'C:/STAT2019.txt' DELIMITER ';';

J'ai en retour d'exécution de ma requête l'erreur suivante :
"ERREUR:  syntaxe en entrée invalide pour le type date : « Date T »"

Dans le fichier STAT2019.txt, la date est au format "02/01/13"
J'ai donc essayé de lui définir un autre format de date avec : SET  datestyle='DMY';
Mais ça ne change rien au problème.
J'ai regardé la doc mais je n'ai pas trouvé d'endroit ou lui spécifier comment lire le  fichier extérieur.

Je n'ai pas toruvé de solution qui fonctionne.

Auriez vous une idée ?

Merci pour votre attention

Gaël

Hors ligne

#2 20/02/2020 18:32:49

pifor
Membre

Re : ERREUR: syntaxe en entrée invalide pour le type date

Avec PG 12.2 sur Linux cela marche sans problème avec la commande \copy de psql (qui est différente de la commande COPY côté serveur);


J'ai en entrée:

$ cat stat2019.txt
1;02/01/13

et dans PG:

create table stat2019(x int, d date);
CREATE TABLE
postgres=# set datestyle='DMY';
SET
postgres=# \copy "stat2019" from 'stat2019.txt' delimiter ';';
COPY 1
postgres=# select * from stat2019;
 x |     d      
---+------------
 1 | 2013-01-02
(1 row)

Dernière modification par pifor (20/02/2020 18:42:20)


Pierre

Hors ligne

#3 20/02/2020 21:46:20

dverite
Membre

Re : ERREUR: syntaxe en entrée invalide pour le type date

Vu l'erreur:
"ERREUR:  syntaxe en entrée invalide pour le type date : « Date T »"

La 1ere ligne du fichier ne contient pas de données mais des noms de colonnes.
Dans ce cas il faut ajouter la clause HEADER  à la commande COPY ou \copy pour qu'elle ignore la 1ere ligne.

Hors ligne

Pied de page des forums