#1 Fri 27 July 2018 11:57
- alexandra21
- Juste Inscrit !
- Date d'inscription: 25 Jul 2018
- Messages: 7
Import CSV dans PostgreSQL
Bonjour à vous,
En utilisant la requête COPY, je voudrais importer des fichiers CSV dans PostgreSQL.
L'inconvénient est que je ne suis pas autorisée à modifier les données sources avant l'import pour remplacer les decimales en ',' par des '.' et modifier l'encodage ANSI en UTF-8 pour la gestion des caractères spéciaux.
Pour faire un test, j'ai modifié l'encodage ANSI en UTF-8 mais les caractères spéciaux sortent en '?' dans PostgreSQL. Egalement,
Comment avec la requête COPY, déclarer les décimales en ',' et gérer l'encodage des caractères spéciaux ?
Je vous remercie pour votre aide,
Hors ligne
#2 Sat 28 July 2018 11:57
- Mathieu Denat
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 5 May 2010
- Messages: 110
Re: Import CSV dans PostgreSQL
Bonjour,
Je pense qu'il est plus judicieux de traiter cette étape hors SGBD (il doit exister par mal d'outils faisant ça très bien, plutôt que de bricoler un truc directement en base).
Pour linux, il existe la commande iconv qui permet de basculer d'un charset vers un autre et donc de basculer d'ANSI en UTF-8. Par contre il va falloir savoir de quel ANSI on parle (probablement ISO8859-1 ou Windows-1252) pour filer la bonne instruction à iconv.
Voici le déroulé que j'imagine pour ledit script:
1. convertir le fichier avec iconv
2. se connecter à la BDD (avec psql) et lancer copy à ce moment là (option -c: psql -h localhost -U blabla -d blibli -c 'COPY...')
Sinon il y a les foreign data wrappers, c'est pratique, mais je maîtrise pas! :p
Voir le petit tuto de MathieuB
https://si.cenlr.org/postgresql_fdw_taxref
Bonne journée.
Mathieu
C'est en forgeant qu'on devient forgeron
Hors ligne