From: | Pierre Chevalier Géologue <pierrechevaliergeol(at)free(dot)fr> |
---|---|
To: | emilu(at)encs(dot)concordia(dot)ca, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: psql -c "\copy table to test.csv with CSV" - french character is wrong |
Date: | 2017-11-23 18:24:39 |
Message-ID: | 0fab017c-ada9-e64f-a889-57e868c35230@free.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
HelloBonsoir,
Which operating system are you dealing with on the client side?
For this kind of purpose, I have a handy script which does the job
flawlessly, I've never had problems with any wéird frènch âccènts.
I don't use the \c command, but the COPY TO syntax, rather. I can't
remember the reason why, but it just works.
Here's the complete script:
# pierre(at)latitude: ~ < 2017_11_23__19_07_35 >
cat bin/sql2csv
#!/bin/sh
# (c) Pierre Chevalier
# Ce script fait un fichier csv à partir de la bd postgresql GLL_BD_NAME
dans l'hôte GLL_BD_HOST, avec la requête en entrée
# This script creates a csv file from the postgresql database
GLL_BD_NAME served by GLL_BD_HOST host, with the query specified as a
double-quoted string input
#$1: requete
#$2: fichier de sortie .csv => bof, non, on redirige, plutôt
#$1: query
#$2: .csv output file => bof, no, better to just redirect or pipe,
later
echo "COPY ($1) TO stdout WITH CSV HEADER FORCE QUOTE *" | psql -X -h
$GLL_BD_HOST $GLL_BD_NAME
As you can see, only the last line is relevant. I use the script as
follows, after adjusting the variables are set properly:
# pierre(at)latitude: ~ < 2017_11_23__19_07_35 >
sql2csv "SELECT DISTINCT opid, year FROM public.field_observations ORDER
BY year LIMIT 10" > /tmp/rien.csv
# pierre(at)latitude: ~ < 2017_11_23__19_07_35 >
cat /tmp/rien.csv
opid,year
"0","1946"
"0","1997"
"9","1997"
"0","1998"
"9","1998"
"9","1999"
"0","1999"
"9","2000"
"17","2000"
,"2006"
# pierre(at)latitude: ~ < 2017_11_23__19_07_35 >
I'm doing this on Debian GNU/Linux, both on client and server.
In your case, you could try something like this (on one line):
echo "COPY (SELECT * FROM t1) TO stdout WITH CSV HEADER FORCE QUOTE *" |
psql -h db1 -U u1 -d d1 > test.csv
À+
Pierre
Le 23/11/2017 à 17:42, Emi a écrit :
> Hello,
>
> Tried to run:
> psql -h db1 -U u1 -d d1 -c "\copy t1 to test.csv with CSV"
>
> Problem:
> French characters are not shown correctly.
>
>
> Tried:
> psql -h db1 -U u1 -d d1 -c "\copy t1 to test.csv with CSV ENCODING
> 'UTF8' "
> Got: \copy: parse error at "encoding"
>
> Can you help how to copy french characters correctly into csv file please?
>
> Thanks a lot.
--
____________________________________________________________________________
Pierre Chevalier
PChGEI: Pierre Chevalier Géologue Et Informaticien
Mesté Duran 32100 Condom
Tél : 06 37 80 33 64
Émail : pierrechevaliergeolCHEZfree.fr
Tweeter: PierreChTux
icq# : 10432285
jabber: pierre(dot)chevalier1967(at)jabber(dot)fr
http://pierremariechevalier.free.fr/pierre_chevalier_geologue
____________________________________________________________________________
From | Date | Subject | |
---|---|---|---|
Next Message | Emi | 2017-11-23 18:57:52 | Re: psql -c "\copy table to test.csv with CSV" - french character is wrong |
Previous Message | Emi | 2017-11-23 16:42:47 | psql -c "\copy table to test.csv with CSV" - french character is wrong |