如何将 UTF8 数据从 PostgreSQL 转换为 AL32UTF8 Oracle DB?

发布于 2025-01-17 14:53:57 字数 1954 浏览 1 评论 0原文

我的任务是通过 dblink 将一些数据从 Postgres 数据库导入到 Oracle

Postgres 和 Oracle 之间的连接工作良好,但不幸的是,当我尝试从创建的视图(在 Oracle 数据库中)读取数据时,我发现了数据编码的问题 - 特殊国家字符(波兰语)。

源 Postgres 数据库有 UTF8 编码,但 Oracle 有 AL32UTF8

Postgres:

select server_encoding
-

UTF8

Oracle:

select * from v$nls_parameters where parameter like '%CHARACTERSET';
-

PARAMETER VALUE

NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

当我使用命令“isql -v”(在具有 Oracle 数据库的目标计算机上)和后来的“select * from table;”时,一切正常,但是当我使用 dblink 从 Oracle 数据库中选择相同的数据,但我的数据编码已损坏

例如: 来自 odbc: isql -v

select * from table;

[ID][Name]
0,Warszawa
1,Kraków
2,Gdańsk

使用 dblink 来自 oracle 的

select * from table@dblink;

[ID][Name]
0,Warszawa
1,KrakĂłw
2,Gdańsk

: /etd/odbc.ini:

[ODBC Data Sources]

[Postgres_DB]
Description         = Postgres_DB
Driver              = /usr/lib64/psqlodbcw.so
DSN                 = Postgres_DB
Trace               = Yes
TraceFile           = /tmp/odbc_sql_postgresdb.log
Database            = database
Servername          = server
UserName            = user
Password            = secret
Port                = 5432
Protocol            = 8.4
ReadOnly            = Yes
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
SSLmode             = require
Charset             = UTF8

$ORACLE_HOME/hs/admin/initPostgres_DB.ora:

HS_FDS_CONNECT_INFO = Postgres_DB
HS_FDS_TRACE_LEVEL=DEBUG
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS = FALSE
HS_LANGUAGE=AL32UTF8
set ODBCINI=/etc/odbc.ini

我已经安装了这些软件包:

postgresql-libs.x8664 - 8.4.20-8.el69
postgresql-odbc.x8664 - 08.04.0200-1.el6
unixODBC.x8664 - 2.2.14-14.el6
unixODBC-devel.x86_64 - 2.2.14-14.el6

请帮助我..我需要在 Oracle 中拥有正确的数据.. 非常感谢

I have a task to import some data from Postgres database to Oracle via dblink

The connection between Postgres and Oracle works good, but unfortunately, when I try read data from created view (in Oracle database), I spotted a problem with data encoding - special national characters (Polish).

Source Postgres database have a UTF8 encoding, but Oracle have a AL32UTF8

Postgres:

select server_encoding
-

UTF8

Oracle:

select * from v$nls_parameters where parameter like '%CHARACTERSET';
-

PARAMETER VALUE

NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

When I use command "isql -v" (on destination machine with Oracle database) and later "select * from table;", everything works good, but when I use this same select from Oracle database using dblink my data encoding is broken

For example:
from odbc:
isql -v

select * from table;

[ID][Name]
0,Warszawa
1,Kraków
2,Gdańsk

from oracle using dblink:

select * from table@dblink;

[ID][Name]
0,Warszawa
1,KrakĂłw
2,Gdańsk

/etd/odbc.ini:

[ODBC Data Sources]

[Postgres_DB]
Description         = Postgres_DB
Driver              = /usr/lib64/psqlodbcw.so
DSN                 = Postgres_DB
Trace               = Yes
TraceFile           = /tmp/odbc_sql_postgresdb.log
Database            = database
Servername          = server
UserName            = user
Password            = secret
Port                = 5432
Protocol            = 8.4
ReadOnly            = Yes
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
SSLmode             = require
Charset             = UTF8

$ORACLE_HOME/hs/admin/initPostgres_DB.ora:

HS_FDS_CONNECT_INFO = Postgres_DB
HS_FDS_TRACE_LEVEL=DEBUG
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS = FALSE
HS_LANGUAGE=AL32UTF8
set ODBCINI=/etc/odbc.ini

I have installed these packages:

postgresql-libs.x8664 - 8.4.20-8.el69
postgresql-odbc.x8664 - 08.04.0200-1.el6
unixODBC.x8664 - 2.2.14-14.el6
unixODBC-devel.x86_64 - 2.2.14-14.el6

Please help me.. I need to have the correct data in Oracle..
Thank you very much

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文