【发布时间】:2021-04-24 06:19:33
【问题描述】:
我有一个读取到 pandas 的 csv 文件,我应该插入到 postgres 中。该文件在某些字段中包含带有反斜杠“字符”的字符串。这会导致问题,因为 copy_from 函数将其读取为转义字符。我如何让它忽略“”并将其保留为字符串。我尝试了许多不同的编码格式,但仍然出现“无法解码字符”错误。问题是我不能替换那个字符,它在字符串中很重要。
def load_into_db(cur, con, file,table_name):
f = open(file, mode="r", encoding='utf-8')
try:
# print("wrote to csv")
sqlstr = "COPY {} FROM STDIN DELIMITER '|' CSV".format(table_name)
cur.copy_from(f, table_name, null="nan", sep="|")
con.commit()
f.close()
except Exception as e:
print(e)
print("something went wrong")
导致问题的行示例
| name | age | attribute |
|---|---|---|
| name1 | 23 | example/1/test |
| name2 | 26 | example/2/test |
错误:编码“UTF8”的字节序列无效:0xa2
【问题讨论】:
-
您能否分享导致此问题的 csv 示例行并重现该错误?
-
抱歉,仍然无法重现——当我使用您的示例为自己创建表和文件时,您的示例没有任何问题。请包含minimal, complete, reproducible example,包括创建表的命令,并附加 csv 文件本身(或 stringio 等价物)——您的示例也是制表符分隔的,仅包含正斜杠字符而不是反斜杠
标签: python pandas postgresql psycopg2