PostgreSql foreign table select 由于特殊字符行而失败
PostgreSql foreign table select fails due to special characters rows
我刚刚设置了一个新的外国 table 如果我只是 select “ID”(整数)字段,它会按预期工作。
当我添加“描述”(文本)字段并尝试 select table 时,它失败并显示此错误消息:
utf-8 'Codec cannot decode byte 0xfc in position 10: invalid start byte
查看遥控器table后,我发现“Description”中包含特殊字符,如:“ö, ü, ä”
我该怎么做才能解决这个问题?
Table 定义(仅前 2 行)
远程table:
CREATE TABLE test (
[Id] [char](8) NOT NULL,
[Description] [nvarchar](50) NOT NULL
)
国外table:
Create Foreign Table "Test" (
"Id" Char(8),
"Description" VarChar(50)
) Server "Remote" Options (
schema_name 'dbo', table_name 'test'
);
附加信息:
- 外部数据包装器:tds_fdw
- 本地服务器:Postgres 12,编码:UTF8
- 远程服务器:Sql服务器,编码:Latin1_General_CI_AS
根据评论中 Laurenz Albe 的建议,我在我的 PostgreSQL 文件夹中创建了一个 freetds.conf
,内容如下:
[global]
tds version = auto
client charset = UTF-8
不要忘记在环境变量中设置配置文件的路径FREETDS
。
Powershell:
[System.Environment]::SetEnvironmentVariable('FREETDS','C:\Program Files\PostgreSQL',[System.EnvironmentVariableTarget]::Machine)
我刚刚设置了一个新的外国 table 如果我只是 select “ID”(整数)字段,它会按预期工作。
当我添加“描述”(文本)字段并尝试 select table 时,它失败并显示此错误消息:
utf-8 'Codec cannot decode byte 0xfc in position 10: invalid start byte
查看遥控器table后,我发现“Description”中包含特殊字符,如:“ö, ü, ä”
我该怎么做才能解决这个问题?
Table 定义(仅前 2 行)
远程table:
CREATE TABLE test (
[Id] [char](8) NOT NULL,
[Description] [nvarchar](50) NOT NULL
)
国外table:
Create Foreign Table "Test" (
"Id" Char(8),
"Description" VarChar(50)
) Server "Remote" Options (
schema_name 'dbo', table_name 'test'
);
附加信息:
- 外部数据包装器:tds_fdw
- 本地服务器:Postgres 12,编码:UTF8
- 远程服务器:Sql服务器,编码:Latin1_General_CI_AS
根据评论中 Laurenz Albe 的建议,我在我的 PostgreSQL 文件夹中创建了一个 freetds.conf
,内容如下:
[global]
tds version = auto
client charset = UTF-8
不要忘记在环境变量中设置配置文件的路径FREETDS
。
Powershell:
[System.Environment]::SetEnvironmentVariable('FREETDS','C:\Program Files\PostgreSQL',[System.EnvironmentVariableTarget]::Machine)