`

PostgreSQL: 如何处理导出的数据中文显示乱码问题?

阅读更多
   在数据库维护过程中,经常有需求导出生产库的部分数据,并且要求将数据保存为
Excel 形式, 对于 Oracle 来说,这是非常简单的工作,因为有 plsqldev 等图形化工具,
且功能非常强大,可以导出 Excel, 对于 PG 来说,这方面的支持就少了,首先图形化界面
工具少,另外常用的PG GUI工具 pgadmin 功能非常简单,没有导出数据到 excel 的功能,

        尽管如此, PostgreSQL 本身提供的 copy 命令可以实现此功能,可以将数据导成 csv
格式。但是在某些 Linux 环境下导出的 csv 文件,传输到 windows 环境下打开中文却显示
乱码, 本文介绍两种解决 csv 文件在 windows 下显示为乱码的方法。


方法一:
     一般 PostgreSQL 建库都是用的 UTF8 字符集, 在 UTF8 字符集情况下如果中文不能
正常显示,可以设置客户端字符集,修改成 " GBK " ,命令如下:

--修改客户端字符集
postgres=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)

postgres=# set client_encoding='GBK';
SET

--copy 导出数据到 GBK 编码类型的 csv 文件
skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header;
COPY 1000000
     
   备注:此时通过 sftp 将 csv 文件传到 windows 本机,就不会出现乱码了。
  
 

方法二: 使用 iconv 工具更改文件编码
          iconv 是 linux 命令,用来转换文件的编码的 ,手册解释如下 "Convert encoding of
given files from one encoding to another",我们可以使用 iconv 命令转换文件的编码,如果 utf8
编码的文件中文显示为乱码,可以使用 iconv 命令将 UTF8 格式文件转换成 gb18030,参考步骤:

--导出数据到 utf8 编码类型文件。
skytf=# set client_encoding='UTF8';
SET

skytf=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)

skytf=# copy skytf.test_2 to '/home/postgres/script/tf/skytf.test_2.csv' with csv header;
COPY 1000000

--将文件编码由 utf8 转换成 gb18030
iconv -f utf-8 -t gb18030 skytf.test_2.csv -o skytf.test_2_gbk.csv


附: iconv 命令参考
[postgres@tf]$ iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.

Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output

Information:
  -l, --list                 list all known coded character sets

Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

For bug reporting instructions, please see:


文章原文:http://francs3.blog.163.com/blog/static/4057672720120694224195/
分享到:
评论

相关推荐

    数据库乱码解决方法

    数据库乱码问题通常是由于字符编码不一致导致的,这在数据迁移、导入导出或跨系统操作时尤为常见。在本文中,我们将深入探讨如何解决Oracle数据库中的乱码问题,并尝试将其理论应用扩展到其他类型的数据库系统。 ...

    postgresql数据库备份和恢复

    在现代数据库管理中,数据备份和恢复是至关重要的操作,它们确保了数据在系统故障、灾难事故或其他意外情况下的安全性和可用性。PostgreSQL,作为一种流行的开源对象关系数据库系统,它为用户提供了多种工具和方法来...

    CSV导入导出

    2. **编码问题**:如果不注意,可能会出现字符编码问题,导致数据乱码。 3. **数据类型**:CSV默认所有数据都是字符串,丢失了原数据的类型信息,导入时需要手动转换。 4. **错误处理**:CSV文件中的错误可能不易...

    postgresql在windows下的快速入门

    - 因为整个数据库使用的是UTF-8编码,而Windows命令行使用的是GBK编码,所以在命令行下可能会出现中文乱码的问题。 - 解决方案:连接到数据库后,通过以下命令更改编码格式: ``` \encoding GBK SET CLIENT_...

    从SQL数据库导出到Excel

    标题“从SQL数据库导出到Excel”涉及到的关键技术点主要集中在如何将数据从关系型数据库管理系统(RDBMS)如MySQL、SQL Server、Oracle或PostgreSQL等导出,并转换成Excel电子表格格式。这种操作在数据分析、报告...

    mysql迁移postgres之navicat篇

    在数据迁移完成后,我们需要进行数据抽查和字符集乱码确认,确保数据迁移正确。 结论 使用 Navicat 客户端工具将 MySQL 数据库迁移到 PostgreSQL 是一种简洁且高效的方法, Navicat 提供了丰富的功能,例如数据库...

    导入导出CSV

    在ASP.NET框架中,"导入导出CSV"是一项常见的数据操作功能,主要涉及从CSV(Comma Separated Values)文件中读取数据并将其导入到应用程序中,或者将应用程序的数据导出为CSV格式,便于存储、分析或与其他系统交换...

    CSV专业修改工具

    CSV文件因其简单、通用和易于处理的特性,在数据分析、数据库导入导出、电子表格交换等方面广泛应用。本篇文章将深入探讨“CSV专业修改工具”,帮助你理解如何高效地管理和编辑这些文件。 1. CSV文件的基本结构 CSV...

    linux常用命令-js.docx

    - 为解决SSH客户端中文乱码问题,需要修改`/etc/sysconfig/i18n`文件,设置合适的字符集,如`LANG="zh_CN.GB18030"`。 了解并熟练运用这些Linux命令,对于提升工作效率和系统维护能力有极大的帮助,特别是在涉及...

    MDB转换Text或CSV

    这种转换在数据处理、数据分析或迁移数据到其他系统时非常有用。Access数据库通常用于存储结构化数据,而Text和CSV格式则更便于在不同软件之间交换数据。 MDB文件是Access数据库的主要格式,它包含表格、查询、窗体...

    HeidiSQL数据库

    这极大地提高了工作效率,尤其是在处理大量数据时。 4. 连接管理:HeidiSQL支持保存多个MySQL服务器的连接配置,你可以轻松地在不同的服务器之间切换,而无需反复输入登录信息。 5. 备份与恢复:HeidiSQL提供了...

    商业源码-编程源码-PCS流量统计分析系统 v1.12 GBK.zip

    它通过GBK编码格式存储和处理数据,确保在中文环境下能够准确无误地进行数据解析和展示。系统版本v1.12表明经过多次迭代改进,具备较高的稳定性和兼容性。 二、主要功能模块 1. 数据采集:系统能够自动捕获网络中的...

    securecrt 操作指令

    - **解决乱码问题**: - 打开 `Options -> Session Options -> Appearance -> Font`,将编码设置为 `UTF-8`。 - **复制粘贴快捷键**: - 在 `Options -> Global Options -> Edit Default Settings -> Terminal -> ...

    ТРАНСПОРТ_dump_

    另一个文件 "掄牠醎嚔i鈅崓僟12_17.xlsx" 的名字看起来像是乱码,这可能是由于编码问题导致的显示错误。通常,.xlsx是Microsoft Excel的工作簿文件,用于存储表格数据。这个文件可能包含与dump数据转换过程相关的...

    Navicat Premium 12.rar

    提供了强大的数据浏览和编辑功能,支持数据的增删改查操作,以及数据导入导出。用户可以通过网格视图或表单视图对数据进行操作,还可以进行条件筛选、排序和分组,极大地提高了数据处理效率。 4. **SQL编写与调试*...

    zabbix学习文档

    **Zabbix 中文乱码问题解决:** - 调整前端编码设置。 - 修改数据库字符集。 **监控第一台服务器:** - 添加主机。 - 配置监控项(item)。 - 创建触发器(trigger)。 - 设置报警动作(action)。 **Zabbix 用户管理:*...

    PLR语言的数据读入读出实例

    通过`pg.spi.exec`函数执行SQL查询,并结合R语言强大的数据处理能力,可以轻松地完成数据导出工作。此外,借助`COPY`命令,我们可以方便地将外部文件中的数据批量导入数据库中。这种方式不仅提高了开发效率,还简化...

    SqlDbx Pro 6.1.6 64 bit UNICODE

    12. **Unicode支持**:确保在处理包含多种语言的数据时,不会出现乱码问题,增强了软件的全球适用性。 综上所述,SqlDbx Pro 6.1.6 64 bit UNICODE是一款功能强大的数据库管理工具,无论对于数据库管理员还是开发...

    上机课数据库MySchool

    【描述】中提到的“机课数据库MySchool”显然是一款用于教学目的的数据库系统,可能是为了模拟或教授实际学校管理中的数据存储和处理。描述中的“实现功能哈哈哈哈哈哈,洗ixix啊啊嘻嘻 洗洗洗 历史老师是 喜欢新华...

Global site tag (gtag.js) - Google Analytics