使用 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,请转换它并再次尝试 运行 您的脚本。
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,请转换它并再次尝试 运行 您的脚本。