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

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

Re: [NOVICE] 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: [NOVICE] 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: [NOVICE] 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: [NOVICE] 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