Thread: COPY Command UtfToLocal: could not convert UTF-8
I installed PG 7.3.4 and created DB with encoding “LATIN10” . I tried to import Flat-File with Copy Command
String delimeter ;";
String FILEPATH ="/home/kerdem/upstream/LIQ.txt";
String pgcopy ="copy public.liq_import from '"+FILEPATH+"' with delimiter '"+delimeter+"' NULL AS '' ";
pstmt = con.prepareStatement(pgcopy);
pstmt.executeUpdate();
pstmt.close();
I am getting
WARNING: copy: line 2, UtfToLocal: could not convert UTF-8 (0xe47469). Ignored
WARNING: copy: line 7, UtfToLocal: could not convert UTF-8 (0xf66765). Ignored
WARNING: copy: line 7, UtfToLocal: could not convert UTF-8 (0xe4676e). Ignored
WARNING: copy: line 8, UtfToLocal: could not convert UTF-8 (0xe4747a). Ignored
WARNING: copy: line 12, UtfToLocal: could not convert UTF-8 (0xc472). Ignored
WARNING: copy: line 13, UtfToLocal: could not convert UTF-8 (0xe4727a). Ignored
.......
....
..
I cannot import special letter like (ä,ß,ü,ö).
But wenn I use same command from psql console in DB I can import all of the special letter,
copy public.liq_import from '/home/kerdem/upstream/LIQ.txt' delimiter ';' NULL as '' ;
I would appreciate any help.
On Wed, 10 Mar 2004, kerdem wrote: > I installed PG 7.3.4 and created DB with encoding �LATIN10� . I tried > to import Flat-File with Copy Command > > String delimeter ;"; > String FILEPATH ="/home/kerdem/upstream/LIQ.txt"; > String pgcopy ="copy public.liq_import from '"+FILEPATH+"' with > delimiter '"+delimeter+"' NULL AS '' "; > > pstmt = con.prepareStatement(pgcopy); > pstmt.executeUpdate(); > pstmt.close(); > > WARNING: copy: line 2, UtfToLocal: could not convert UTF-8 (0xe47469). > Ignored > > But wenn I use same command from psql console in DB I can import all > of the special letter, > > copy public.liq_import from '/home/kerdem/upstream/LIQ.txt' delimiter > ';' NULL as '' ; > I imagine this problem is a result of the JDBC driver setting the client_encoding variable to unicode (which it needs to function properly), this is making the COPY command think the file has a unicode encoding. When connecting with psql your client_encoding defaults to the database encoding which I imagine is what the file is encoded as. As to how to solve this problem? It is possible to SET the client_encoding temporarily and then reset it after the COPY is done, but this is something I hesitate to recommend because it's definitely not something the JDBC driver wants you doing. I'm not sure what else to could be done, extend the COPY command to take an encoding argument? Kris Jurka