Re: Linux x Windows LOCALE/ENCODING compatibility

From: Carlos Henrique Reimer <carlos(dot)reimer(at)opendb(dot)com(dot)br>
To: Filip Rembiałkowski <filip(dot)rembialkowski(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Linux x Windows LOCALE/ENCODING compatibility
Date: 2010-11-09 01:31:02
Message-ID: AANLkTik_fxC2sHv0x7LQ-66sVH8S4dwF4VpAMUdyCGQQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

I'm currently in the process of moving the data from the Windows server to
the new Linux box but facing some problems with the encoding.

Additional configuration information: Windows is running PG 8.3 and the new
Linux box is PG 8.4.

Windows dump command:
pg_dump -U postgres -Fc -v -f "f:\backup

Linux restore command:
pg_restore -v -n brasil -d mapas /backup

pg_restore error:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3574; 0 40805 TABLE DATA
cidade
postgres
pg_restore: [archiver (db)] COPY failed: ERROR: character 0x81 of encoding
"WIN
1252" has no equivalent in "UTF8"
CONTEXT: COPY cidade, line 6

I also tried to dump using pg_dump -E UTF8 but then I got:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: character 0x81 of encoding
"WIN1252" has no equivalent in "UTF8"
pg_dump: The command was: COPY brasil.cidade (gid, "municpio", "municpi0",
uf, longitude, latitude, the_geom) TO stdout;
pg_dump: *** aborted because of error

How can I fix this error?

Thank you!

2010/11/1 Filip Rembiałkowski <filip(dot)rembialkowski(at)gmail(dot)com>

> 2010/11/1 Carlos Henrique Reimer <carlos(dot)reimer(at)opendb(dot)com(dot)br>
> >
> > Hi,
> >
> > I currently have my PostgreSQL server running in a windows box and now
> we're migrating it to a Linux operational system.
> >
> > Current windows configuration:
> > pg_controldata shows the LC_COLLATE and LC_CTYPE are
> Portuguese_Brasil.1252
> > psql \l command shows we have databases with encoding WIN1252 and UTF8
> >
> > New Linux box:
> > Which --locale and --encoding options should I use for the INITDB command
> to have a compatible locale and encoding cluster?
> > Which --encoding option should I use in the CREATEDB command to have a
> compatible encoding database?
>
> from your description I assume you have 8.3 on Windows,
> but you did not tell us which PostgreSQL version you are planning to
> deploy on Linux. I'd recommend 8.4.
>
> main difference is that on Windows, UTF-8 encoding can be used with
> any locale. on Unix, not.
>
> generally, it is safe to do ``initdb --locale=pt_BR.UTF-8'' and create
> fresh databases with default settings.
>
> then, use Linux pg_dump and psql to clone Windows databases. like this:
> pg_dump -h windowsbox -p 5432 -U postgres DBNAME | psql DBNAME
>
> UTF-8 is compatible with all client encodings.
>
> you will get compatible bahaviour for your existing apps with
> SET client_encoding TO 'whatever'; /* this can be entered as pre-SQL
> on every client connection */
>
> see http://www.postgresql.org/docs/8.4/static/multibyte.html,
> 22.2.3. Automatic Character Set Conversion Between Server and Client
>
>
> HTH
>
> --
> Filip Rembiałkowski
> JID,mailto:filip(dot)rembialkowski(at)gmail(dot)com
> http://filip.rembialkowski.net/
>

--
Reimer
47-3347-1724 47-9183-0547 msn: carlos(dot)reimer(at)opendb(dot)com(dot)br

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Alvaro Herrera 2010-11-09 01:56:38 Re: Removing pgsql_tmp files
Previous Message Tom Lane 2010-11-09 01:29:28 Re: Removing pgsql_tmp files