PostgreSQL如何导入SJIS字符集的文件

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:

外部文件来自于Windows,日语SJIS字符集。

由于SJIS字符集和标准的POSIX有冲突,故Linux平台一般是不支持此字符集的。而PostgreSQL的服务器端也不支持它。

但是它支持客户端使用SJIS,因此导入时,可以用PostgreSQL的自动变换功能。

具体如下:

复制代码
-----------------------------
Linux Encoding:
[root@pg200 data]# echo $LANG
ja_JP.UTF-8
[root@pg200 data]# 


-----------------------------
PostgreSQL Encoding:
postgres=# \x
Expanded display is on.
postgres=# \l
List of databases
-[ RECORD 1 ]-----+----------------------
Name              | postgres
Owner             | postgres
Encoding          | UTF8
Collate           | ja_JP.UTF-8
Ctype             | ja_JP.UTF-8
Access privileges |
-[ RECORD 2 ]-----+----------------------
Name              | template0
Owner             | postgres
Encoding          | UTF8
Collate           | ja_JP.UTF-8
Ctype             | ja_JP.UTF-8
Access privileges | =c/postgres
                  | postgres=CTc/postgres -[ RECORD 3 ]-----+----------------------
Name              | template1
Owner             | postgres
Encoding          | UTF8
Collate           | ja_JP.UTF-8
Ctype             | ja_JP.UTF-8
Access privileges | =c/postgres
                  | postgres=CTc/postgres

postgres=# 


-----------------------------
Windows side File:(sjistest.txt)
ああああ
いいいい
うううう
ええええ
おおおお


-----------------------------
Directly Show it in Linux:
[root@pg200 data]# cat sjistest.txt
        
        
        
        
        


-----------------------------
In PostgreSQL、directly COPY:
[postgres@pg200 pgsql]$ ./bin/psql
psql (9.2.4)
Type "help" for help.

postgres=# copy t1 from '/usr/local/pgsql/data/sjistest.txt';
ERROR:  invalid byte sequence for encoding "UTF8": 0x82
CONTEXT:  COPY t1, line 1
postgres=# 


-----------------------------
PostgreSQL automatically changing:

[postgres@pg200 pgsql]$ ./bin/psql
psql (9.2.4)
Type "help" for help.

postgres=# set client_encoding to 'SJIS'; SET postgres=# copy t1 from '/usr/local/pgsql/data/sjistest.txt';
COPY 5
postgres=# set client_encoding to 'UTF8'; SET postgres=# select * from t1;
   val    
----------
 ああああ
 いいいい
 うううう
 ええええ
 おおおお
(5 rows)

postgres=# 
复制代码

 






本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3351237.html,如需转载请自行联系原作者

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
SQL 关系型数据库 PostgreSQL
把PostgreSQL的表导入SQLite
把PostgreSQL的表导入SQLite
92 0
|
6月前
|
关系型数据库 Linux PostgreSQL
这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
【1月更文挑战第23天】【1月更文挑战第111篇】这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
167 11
|
5月前
|
关系型数据库 5G PostgreSQL
postgreSQL 导出数据、导入
postgreSQL 导出数据、导入
55 1
|
关系型数据库 PostgreSQL
PostgreSQL如何删除不使用的xlog文件
PostgreSQL如何删除不使用的xlog文件
152 0
|
Oracle 安全 关系型数据库
如何在openGauss/PostgreSQL手动清理XLOG/WAL 文件?
openGauss/PostgreSQL中的预写式日志WAL(Write Ahead Log),又名Xlog或redo log,相当于oracle的online redo log, 不同的是oracle online redo log是提前创建几组滚动使用,但在opengauss中只需要本配置参数控制WAL日志的周期,数据库会一直的创建并自动清理,但存在一些情况WAL日志未清理导致目录空间耗尽,或目录空间紧张时手动删除wal日志时,比如如何确认在非归档模式下哪些WAL日志文件可以安全删除?
947 0
|
存储 关系型数据库 数据库
PostgreSQL孤儿文件
与所有其他关系数据库系统一样,PostgreSQL需要通过写入wal日志或在Checkpoint时同步数据到数据文件来持久化数据到磁盘上。对于数据文件,一旦Relation达到SEGMENT_SIZE(默认1GB),PostgreSQL就会创建一个新的数据文件。因此如果Relation持续增长,则该Relation可能会由多个文件组成。在这篇文章中想要考虑的问题是,是否可能存在孤儿文件。
|
6月前
|
SQL 关系型数据库 MySQL
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
259 0
|
6月前
|
SQL 关系型数据库 Shell
postgresql|数据库|批量执行SQL脚本文件的shell脚本
postgresql|数据库|批量执行SQL脚本文件的shell脚本
324 0
|
存储 Oracle 关系型数据库
PostgreSQL技术大讲堂 - 第15讲:数据文件与块存储结构
PostgreSQL技术大讲堂 - 第15讲:数据文件与块存储结构
257 1
|
关系型数据库 数据库 PostgreSQL
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
270 1