Обсуждение: LATIN2->UTF8 conversation with dblink

Поиск
Список
Период
Сортировка

LATIN2->UTF8 conversation with dblink

От
Ruzsinszky Attila
Дата:
Hi,

The situation:
We've got two machines. The source database (DB) is running on an RHEL
5.x machine
with PSQL 8.1.11. The destination DB is running on SuSE 11.0 with PSQL 8.3.x.
The mechines are relative far away each other and there is a 2Mbps WAN
line between them.

The DB is the same except the character coding. Source is LATIN2 and
the target DB is UTF8.
We wrote a trigger to copy the data from source to target with dblink.
The problem is the
different DB character coding! PGSQL complains about wrong byte order.
It is trivial.

If the trigger is interesting I can copy here, of course.

What could be the solution? Of course I can't change the default
machine char code, easily.

TIA,
Ruzsi

Ps.: I've got an other question about our trigger making dblink
"permanent" but the char coding
is the most interesting for us.

Re: LATIN2->UTF8 conversation with dblink

От
Tom Lane
Дата:
Ruzsinszky Attila <ruzsinszky.attila@gmail.com> writes:
> The situation:
> We've got two machines. The source database (DB) is running on an RHEL
> 5.x machine
> with PSQL 8.1.11. The destination DB is running on SuSE 11.0 with PSQL 8.3.x.
> The mechines are relative far away each other and there is a 2Mbps WAN
> line between them.

> The DB is the same except the character coding. Source is LATIN2 and
> the target DB is UTF8.
> We wrote a trigger to copy the data from source to target with dblink.
> The problem is the
> different DB character coding! PGSQL complains about wrong byte order.

Hmm.  You can presumably fix this by setting client_encoding in the
dblink connection to match the encoding in use in the database it's
called in.  But I wonder why dblink doesn't just do that for you
automatically.

            regards, tom lane

Re: LATIN2->UTF8 conversation with dblink

От
ries van Twisk
Дата:


On Feb 2, 2009, at 1:31 PM, Tom Lane wrote:

> Ruzsinszky Attila <ruzsinszky.attila@gmail.com> writes:
>> The situation:
>> We've got two machines. The source database (DB) is running on an
>> RHEL
>> 5.x machine
>> with PSQL 8.1.11. The destination DB is running on SuSE 11.0 with
>> PSQL 8.3.x.
>> The mechines are relative far away each other and there is a 2Mbps
>> WAN
>> line between them.
>
>> The DB is the same except the character coding. Source is LATIN2 and
>> the target DB is UTF8.
>> We wrote a trigger to copy the data from source to target with
>> dblink.
>> The problem is the
>> different DB character coding! PGSQL complains about wrong byte
>> order.
>
> Hmm.  You can presumably fix this by setting client_encoding in the
> dblink connection to match the encoding in use in the database it's
> called in.  But I wonder why dblink doesn't just do that for you
> automatically.
>
>             regards, tom lane
>


We did it like this:

INSERT INTO a tbl_datafeed
SELECT
nextval('acc_mkt.tbl_ants_to_ace_feed_row_id_seq'),
convert(project_number::bytea, 'WIN1258'::text, 'UTF8'::text),
convert(project_name::bytea, 'WIN1258'::text, 'UTF8'::text),
...
....
...
  FROM dblink('dbname=mydbname host=removehost user=someuser','SELECT
* FROM tbl_datafeed') AS p
(
...
..
...
.)

Ries




Re: LATIN2->UTF8 conversation with dblink

От
Joe Conway
Дата:
Tom Lane wrote:
> Ruzsinszky Attila <ruzsinszky.attila@gmail.com> writes:
>> The DB is the same except the character coding. Source is LATIN2 and
>> the target DB is UTF8.
>> We wrote a trigger to copy the data from source to target with dblink.
>> The problem is the
>> different DB character coding! PGSQL complains about wrong byte order.
>
> Hmm.  You can presumably fix this by setting client_encoding in the
> dblink connection to match the encoding in use in the database it's
> called in.  But I wonder why dblink doesn't just do that for you
> automatically.

Mainly because I never thought about it myself before, and this is the
first time I've seen someone complain ;-)

But if you think automatically setting client encoding is appropriate, I
will make the change. Would it be classified as a bug (and therefore
something to backpatch) or a new feature?

Joe

Re: [HACKERS] LATIN2->UTF8 conversation with dblink

От
Tom Lane
Дата:
Joe Conway <mail@joeconway.com> writes:
> Tom Lane wrote:
>> Hmm.  You can presumably fix this by setting client_encoding in the
>> dblink connection to match the encoding in use in the database it's
>> called in.  But I wonder why dblink doesn't just do that for you
>> automatically.

> But if you think automatically setting client encoding is appropriate, I
> will make the change. Would it be classified as a bug (and therefore
> something to backpatch) or a new feature?

You could make an argument either way; but given that we're not seeing
vast demand in this thread, I think I'd vote for not changing behavior
in the back branches.  It'd be good to get it into 8.4 though.

            regards, tom lane