Re: psql -c "\copy table to test.csv with CSV" - french character is wrong

Pierre Chevalier Géologue <[email protected]>
Newsgroups gmane.comp.db.postgresql.sql
Message-ID <[email protected]>
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@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@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@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@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: [email protected]
   http://pierremariechevalier.free.fr/pierre_chevalier_geologue
____________________________________________________________________________
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.