postgresql 字符集server_encoding变更

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: --今天在使用postgres_fdw做远端数据库转储时,发现本地所使用的字符集与远端是不同的,造成插入数据错误postgres=# insert into t select * from...
--今天在使用postgres_fdw做远端数据库转储时,发现本地所使用的字符集与远端是不同的,造成插入数据错误
postgres=# insert into t select * from for_t;    
ERROR:  character with byte sequence 0xe7 0xa6 0xb4 in encoding "UTF8" has no equivalent in encoding "EUC_CN"
CONTEXT:  Remote SQL command: SELECT  pnr FROM rudy.t


--本地的编码
postgres=# select name,setting,context from pg_settings  where name like '%encoding%';     
      name       | setting | context  
-----------------+---------+----------
 client_encoding | UTF8    | user
 server_encoding | EUC_CN  | internal
 
 --远端的数据库编码
 dev=# select name,setting,context from pg_settings  where name like '%encoding%';     
      name       | setting | context  
-----------------+---------+----------
 client_encoding | UTF8    | user
 server_encoding | UTF8    | internal
 
 
 --可以选择导出数据,使用inserts方式,再执行导入
 pg_dump -d dev -t rudy.t --data-only --inserts -f /tmp/t.sql
 psql -l -f /tmp/t.sql
 
 --注意使用这种方式导入时比较慢
 --如果其中某一行命令出错,那么将仅有该行数据丢失,而不是整个表的数据丢失,即不能做到事务安全
 --由于编码的原因会造成一部分数据不能导入成功
 ERROR:  character with byte sequence 0xe7 0xa6 0xb4 in encoding "UTF8" has no equivalent in encoding "EUC_CN"
 
 
 
 --也可以重新初始化一个新的数据库集群
--备份整个数据库集群
 pg_dumpall -f /tmp/pg_dump.sql
  mv data/ data_bak
  initdb -E UTF8 --local=C
  --覆盖新生成的配置文件
  cp ../data_bak/postgresql.conf .
  cp ../data_bak/pg_hba.conf . 
 --导入之前导出的文件则可
  psql -f /tmp/pg_dump.sql
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
关系型数据库 数据库 PostgreSQL
|
6月前
|
缓存 关系型数据库 MySQL
Java 实现实时监听MySQL数据库变更MySQLBinListener
Java 实现实时监听MySQL数据库变更MySQLBinListener
|
关系型数据库 MySQL
MySql 627.变更性别
MySql 627.变更性别
39 0
MySql 627.变更性别
|
SQL 容灾 Java
ORM规约变更经典案例---mysql军规
  先介绍一下《MySQL数据库开发的三十六条军规》,这里只介绍核心的,具体内容大家可以自行百度,这是从底层开发人员到管理者必须知道规范。出自58赶集。 写在前面的话:   总是在灾难发生后,才想起容灾的主要性;   总是在吃过亏后,才记得有人提醒过。
ORM规约变更经典案例---mysql军规
|
关系型数据库 OLAP 数据库
分析型数据库 PostgreSQL版本实例规格定义变更
信息摘要: 实例由按多个“计算组”组成,改为由按“节点”组成。一个节点只对应一个数据分区,简化规格定义,遵循标准集群数据库的模式。适用客户: 数据仓库/大数据/数据分析/数据库用户;政府/金融/零售/互联网等行业版本/规格功能: AnalyticDB for PostgreSQL 实例规格定义由多个“计算组”组成改为由多个“节点”组成。
991 0
|
Oracle 关系型数据库 数据库
PostgreSQL技术周刊第27期:PostgreSQL变更事件捕获(CDC) 原理应用与实践
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
5520 0
|
关系型数据库 数据库 PostgreSQL
【PostgreSQL系列直播】PostgreSQL变更事件捕获(CDC) 原理应用与实践
主讲人 冯若航前探探PostgreSQL DBA,前阿里全栈工程师。译有《设计数据密集型应用》,《PostgreSQL原理浅析》。 直播内容 《PostgreSQL CDC(变更事件捕获)原理应用与实践》 变更数据捕获(change data capture, CDC)是一种订阅数据库的写入变更,并将其提取转换为可以复制到其他系统中的形式的过程,妙用无穷。
2235 0
|
SQL 关系型数据库 数据库
PostgreSQL sql文件编码引起的数据导入乱码或查询字符集异常报错(invalid byte sequence)
标签 PostgreSQL , 乱码 , 文件编码 背景 当用户客户端字符集与服务端字符集不匹配时,写入的多字节字符(例如中文)可能出现乱码。 例子 数据库字符集为sql_ascii,允许存储任意编码字符。
3368 0
|
关系型数据库 Unix 数据库
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 23 章 本地化_23.3. 字符集支持
23.3. 字符集支持 23.3.1. 被支持的字符集 23.3.2. 设置字符集 23.3.3. 服务器和客户端之间的自动字符集转换 23.3.4. 进一步阅读 PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括单字节字符集,比如 ISO 8859 系列,以及多字节字符集 ,比如EUC(扩展 Unix 编码 Extended Unix Code)、UTF-8 和 Mule 内部编码。
1190 0