【问题标题】:import data from excel to postgres in python using pyodbc使用pyodbc将数据从excel导入python中的postgres
【发布时间】:2011-11-23 07:33:21
【问题描述】:

我正在使用pyodbc 将数据从MS-Excel 导入python(2.6) 中的PostgreSQL

面临的问题是:

excel源码中有left single quotation mark(ANSI hex code : 0x91)等字符。现在,当它使用 pyodbc 导入 PostgreSQL 时,它会终止并给出错误 DatabaseError: invalid byte sequence for encoding "UTF8": 0x91

我尝试了什么:我暂时使用decode('unicode_escape')。但是,这不能完成,因为这只会删除/转义相关字符。

替代试验:最初解码,Unicode 无处不在,然后在需要时从数据库中编码。由于手头的项目范围很广,这也无法做到。

请建议我一些方法/程序/内置函数来完成任务。

【问题讨论】:

  • 不知道这是否回答了您的问题。但您可能会发现 this related answer 有一些用处。
  • 嘿,谢谢你的努力。我阅读并尝试使用 encode('utf-8') 但出现以下错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 33: ordinal not in range(128)

标签: python excel postgresql unicode pyodbc


【解决方案1】:

找出源文档的真正编码。可能是WIN1251。要么对其进行转码(例如使用iconv),要么相应地设置PostgreSQL 的client_encoding

如果您在pyodbc 中没有设置(我不知道),您可以随时发出简单的 SQL 命令:

SET CLIENT_ENCODING TO 'WIN1251';

更多内容见手册"Automatic Character Set Conversion Between Server and Client"一章。

【讨论】:

  • 嘿,欧文。我们可以将已经创建的数据库的编码更改为所需/所说的编码吗?
  • @SandipAgarwal:不。可以在同一个数据库集群中使用不同的编码创建一个新的数据库(基于 template0),但编码必须与您的语言环境设置兼容,这说明了它向下。 Here is a related posting on SO. 我不相信这会是解决您的问题的好主意。
猜你喜欢
  • 1970-01-01
  • 2018-04-01
  • 2018-06-24
  • 1970-01-01
  • 2019-12-02
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多