使用 python 向 postgresql 添加数据时出现 UTF-8 错误

UTF-8 error while adding data to postgresql with python

import io
import csv
import datetime 
import psycopg2
import glob

conn = psycopg2.connect("host= 127.0.0.1 dbname=postgres user=postgres password=123 client_encoding='utf8' ")

f = io.StringIO()
w = csv.writer(f)


f.seek(0)
cursor = conn.cursor()

cursor.copy_expert(f""" COPY ama3 FROM 'C:/abc/asd.csv'  (FORMAT CSV)""", f)

conn.commit()


错误:CharacterNotInRepertoire:错误:语言编码“UTF8”的字节序列无效:

csv 文件包含包含“ş,i,ö,Ğ,İ”的字母。我认为错误是由此引起的,但我不想更改它们。

您不是从 ptyhon 添加数据,而是使用 PostgreSQL 的 copy 命令直接从文件系统添加数据。确保您的 csv 文件是 UTF-8 编码的。

在 linux/mac 期间,您可以轻松地执行以下操作:

$ file /abc/asd.csv

在 Windows 中并不是那么简单(我假设您使用的是 Windows)。

在 windows 中,您可以:

使用 Windows 附带的普通旧香草记事本打开您的文件。单击 Save As....

时,它将显示文件的编码

如果它不是 UTF-8,请转换它并再次尝试 运行 您的脚本。