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 13/05/2021 14:01:54

Yann
Membre

Problème d'accent lors d'un import d'un fichier .sql

Bonjour, 

Je débute avec psql sous win10 et après avoir cherché un peu partout je me tourne vers vous, voilà mon soucis : 

- j'ai récupéré un fichier person.sql généré par le site https://mockaroo.com/ (générateur de data test)
(le contenu de ce fichier person.sql)

create table person (
	first_name VARCHAR(50),
	last_name VARCHAR(50),
	email VARCHAR(50),
	gender VARCHAR(50),
	date_of_birth DATE,
	country_of_birth VARCHAR(50)
);
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Ténner', 'Mumbeson', 'tmumbeson0@usda.gov', 'Genderqueer', '22/12/2020', 'Philippines');
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Elvéra', 'Durrett', 'edurrettrr@diigo.com', 'Agender', '05/07/2020', 'Philippines');

- puis j'ai créé une database "test"
- puis j'ai importé le .sql avec la commande :

psql -U postgres -d test -f person.sql

(tout est ok jusque là)

- et enfin quand je me connecte à la DB et que j'exécute

SELECT * FROM "person";

- les accents des prénoms ne s'affichent pas correctement :
résultat

- alors que quand j'ajoute les lignes moi-même à la main en étant connecté à la DB "test" avec la commande

INSERT INTO "person" ("first_name", "last_name", "email", "gender", "date_of_birth", "country_of_birth") values ('Ténner', 'Mumbeson', 'tmumbeson0@usda.gov', 'Genderqueer', '22/12/2020', 'Philippines');

- et que je refais la commande SELECT, les accents sont correctement affichés sad

résultat ajout à la main

Si quelqu'un sait comment résoudre le problème ? smile

Dernière modification par Yann (13/05/2021 14:04:43)

Hors ligne

#2 13/05/2021 15:35:59

gleu
Administrateur

Re : Problème d'accent lors d'un import d'un fichier .sql

Forte chance que les données du fichier importé étaient dans un autre encodage que celui déclaré par le paramètre client_encoding. Je pense que je commencerais par regarder le contenu de ce fichier et surtout son encodage.


Guillaume.

Hors ligne

#3 13/05/2021 22:03:07

Yann
Membre

Re : Problème d'accent lors d'un import d'un fichier .sql

en tapant la commande 'show client_encoding' ça me renvoie WIN1252
et je sais pas trop comment récupérer le format d'encodage du fichier .sql

Dernière modification par Yann (13/05/2021 22:03:49)

Hors ligne

#4 14/05/2021 09:05:30

gleu
Administrateur

Re : Problème d'accent lors d'un import d'un fichier .sql

Je crois que notepad++ l'indique mais je n'en sais guère plus que ça. Mes connaissances sont Windows ne sont plus ce qu'elles étaient.


Guillaume.

Hors ligne

#5 14/05/2021 09:23:14

Yann
Membre

Re : Problème d'accent lors d'un import d'un fichier .sql

c'est bien en UTF-8

gleu a écrit :

Je crois que notepad++ l'indique mais je n'en sais guère plus que ça. Mes connaissances sont Windows ne sont plus ce qu'elles étaient.

C'est ce que me disent tous les gens qui me file un p'tit coup d'pouce ^^ j'crois que j'vais bientôt tenter Linux en dualboot
Merci quand même pour l'aide ! si jamais je trouve la solution j'la poserait ici !
Belle journée à tt le monde !

Hors ligne

#6 14/05/2021 09:34:44

gleu
Administrateur

Re : Problème d'accent lors d'un import d'un fichier .sql

Si le fichier est en UTF-8, il faut tout d'abord configurer le client_encoding à UTF-8 puis intégrer les données. Dans votre cas, soit vous modifiez le fichier person.sql en ajoutnat en première ligne "SET client_encoding TO UTF8;", soit vous entrez dans psql et vous lancez les deux commandes :

SET client_encoding to UTF8;
\i person.sql

(Ça va recréer la table, donc il faut l'avoir supprimé auparavant.)


Guillaume.

Hors ligne

#7 14/05/2021 19:28:08

Yann
Membre

Re : Problème d'accent lors d'un import d'un fichier .sql

gleu a écrit :

Si le fichier est en UTF-8, il faut tout d'abord configurer le client_encoding à UTF-8 puis intégrer les données. Dans votre cas, soit vous modifiez le fichier person.sql en ajoutnat en première ligne "SET client_encoding TO UTF8;", soit vous entrez dans psql et vous lancez les deux commandes :

SET client_encoding to UTF8;
\i person.sql

(Ça va recréer la table, donc il faut l'avoir supprimé auparavant.)


exactement !

 set client_encoding to UTF8; 

et aussi changer le chcp du terminal :
- soit depuis le terminal avec

 powershell /c chcp 65001 

ou depuis le cmd

 cmd /c chcp 65001

-ou depuis dans psql :

 \! chcp 65001

ensuite pour pas avoir à le faire à chaque fois j'ai fait cette manip' (hésitez pas à me dire si c'est déconseillé, mais pour le moment ça fonctionne nickel) :
e6b67f6fb90e6d5fd4c141a67f16bef2.png
626a2b1de8720b8934ef8860d69caf22.png

Si jamais ça peut servir à d'autre smile

Hors ligne

#8 17/05/2021 09:47:53

Re : Problème d'accent lors d'un import d'un fichier .sql

gleu a écrit :

Je crois que notepad++ l'indique mais je n'en sais guère plus que ça. Mes connaissances sont Windows ne sont plus ce qu'elles étaient.

Pour Notepad++, l'encodage est indiqué dans la barre d'état en bas à droite et il y a un menu "Encodage" dans la barre de menu qui donne l'information et permet de transcoder.
J'ai eu ce problème d'accent après un copy que j'ai réglé en passant le fichier en UTF8 (je me rappelle plus si c'était avec ou sans BOM) depuis Notepad++.

Hors ligne

Pied de page des forums