You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将MongoDB数据导入BigQuery时CSV编码类型错误求助

解决Python2.7下pandas to_csv写入StringIO的TypeError问题

这个错误的核心原因是Python2.7里io.StringIO只接受unicode类型数据,但你指定encoding='utf-8'调用df.to_csv()时,pandas输出的是UTF-8编码的字节串(str类型),两者类型不匹配导致报错。

直接修改以下两处即可解决:

  • 将io.StringIO()替换为io.BytesIO(),BytesIO专门用于处理字节流,和pandas输出的编码后内容匹配
  • 无需调整BigQuery的load_table_from_file调用,它可以直接处理BytesIO流

修改后的关键代码片段:

import io
import pandas as pd

# ... 前面的MongoDB数据读取逻辑不变 ...

df = pd.DataFrame(data, columns=["_id", "account_id", "limit", "products"])

# 替换StringIO为BytesIO
csv_file = io.BytesIO()
# 保留encoding参数,确保输出UTF-8编码的字节流
df.to_csv(csv_file, index=False, encoding='utf-8')
csv_file.seek(0)

bigquery_client.load_table_from_file(csv_file, table).result()

client.close()
client_bq.close()

补充:如果后续有机会升级到Python3,这个问题会自动消失——Python3的StringIO和BytesIO区分更清晰,且pandas的to_csv在Python3下的行为更统一。

内容的提问来源于stack exchange,提问作者CoderCoder42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21