使用importRows上传FusionTables数据失败,提示HttpError 500: Backend Erro



我正在使用Google API Client Library for Python更新Fusion Table,并使用Fusion Tables API v1向Fusion Table添加行。当我使用SQL INSERT查询方法一次执行一行操作时,我可以成功地做到这一点。我还希望能够使用importRows方法更新融合表。

我开始与一个文件'testCsv.csv',并希望将其完全导入到现有的融合表。这里有一个很好的概念性解释。

概念示例解释了API是否接受图像,但要更新Fusion Table,类型必须为'application/octet-stream'。

我尝试使用importRows方法与以下代码(注意:service是一个经过认证的API连接):

from apiclient.discovery import build
from apiclient.http import MediaFileUpload
.
.
.
mediaCsv=MediaFileUpload(csvFileName, mimetype='application/octet-stream')
request = service.table().importRows(tableId=wrrTweetsID, media_body=mediaCsv,
            startLine=1, encoding='auto-detect')
response = request.execute()

当我执行这段代码时,我得到了这个错误信息:

raise HttpError(resp, content, uri=self.uri)
apiclient.errors.HttpError: <HttpError 500 when requesting
  "https://www.googleapis.com/upload/fusiontables/v1/tables/--table_id--/import?uploadType=media&alt=json&startLine=1&encoding=auto-detect"
  returned "Backend Error">

我的问题是,我需要做一些事情的.csv转换为application/octet-stream ?或者我在使用这种方法时遗漏了什么?

自从发布这个问题以来,我了解到application/octet-stream类似于说类型是任何东西。我也弄清楚了我使用importRows的问题。方法文档指出

"默认为UTF-8。如果您不确定编码,请使用'auto-detect'。"

我认为使用'auto-detect'是确保我的请求被正确接收的最安全的方法。这是一个错误的假设:将编码更改为'utf-8'会导致importRows请求成功。

相关内容

  • 没有找到相关文章

最新更新