Thread: psql -c "\copy table to test.csv with CSV" - french character iswrong
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. -- . French characters show correctly in t1 . Client/server encoding: UTF8 . Cannot use super user: postgre . Version 8.3.18
Re: psql -c "\copy table to test.csv with CSV" - french character iswrong
From
Pierre Chevalier Géologue
Date:
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: pierre.chevalier1967@jabber.fr http://pierremariechevalier.free.fr/pierre_chevalier_geologue ____________________________________________________________________________
> sql2csv "SELECT DISTINCT opid, year FROM public.field_observations > ORDER BY year LIMIT 10" > /tmp/rien.csv > Ok. Will use stdout then. Thanks. -- psql -c "copy t1 to STDOUT with CSV" >! test.csv
Re: psql -c "\copy table to test.csv with CSV" - french character is wrong
From
"David G. Johnston"
Date:
On Thursday, November 23, 2017, Emi wrote:
>
> Tried:
> psql -h db1 -U u1 -d d1 -c "\copy t1 to test.csv with CSV ENCODING
> 'UTF8' "
> Got: \copy: parse error at "encoding"
>
>
You are mixing obsolete and non-obsolete syntax. The current
syntax requires parentheses around the with options and all options written
as key-value pairs.
David J.
Hello,
>
>
> Tried:
> psql -c "\copy t1 to test.csv with CSV ENCODING 'UTF8' "
> Got: \copy: parse error at "encoding"
>
>
> mixing obsolete and non-obsolete syntax. requires parentheses around
> with options and all options written as key-value pairs.
I think you mean 9.x. My version is 8.x, and doc shows ENCODING
'encoding_name' only for 9.x. I will use stdout for 8.x.
Thanks.