【发布时间】:2021-07-08 10:52:45
【问题描述】:
我正在尝试使用 pandas to_sql 一次将数据框中的多个 csv 导入 MySQL 数据库。创建引擎后,我正在运行以下命令:
folder_path = (file_path)
os.chdir(folder_path)
for file in os.listdir(folder_path):
if '.csv' in file:
df = pd.read_csv(file, low_memory = False)
table_name = str(file.strip('.csv'))
df.to_sql(table_name, con = engine, if_exists = 'replace')
但是,当我运行代码时,我收到以下错误: "UnicodeEncodeError: 'charmap' 编解码器无法对位置 0-7 中的字符进行编码:字符映射到 "
即使我尝试使用导入向导来加载出现错误的特定表,它也只导入了 42,000 条记录中的 50 条。
感谢任何帮助!
【问题讨论】:
-
你能分享一个你的 csv 数据样本吗?我的假设是,没有太多信息,这可能与您的
CSV数据在文件中的方式有关。检查CSV的第49、50和51行 -
数据来自这个 kaggle 数据集:kaggle.com/mrmorj/dataset-of-songs-in-spotify。第一个文件genres-v2 出现错误。我看到肯定有一些行不包含 UTF-8,但它们不在 50 左右。关于如何在导入之前快速删除所有包含非 utf-8 字符的行的任何建议?
-
总是指定编码(例如
read_csv)。不要相信 Python 会为你找到它(不幸的是,Windows 仍然使用不可预测的默认值) -
@shuaf98 你用的是哪个文件?你需要给我更多的东西才能帮助我:)
-
Rui,该文件是我发布的 kaggle 链接上的genres_v2 文件。 Giacoma,编码目前指定为 UTF-8。是否有不同的编码可以代替?
标签: python mysql sql pandas unicode