Vous n'êtes pas identifié(e).
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
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
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.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne