【问题标题】:Using importRows to upload FusionTables data fails with HttpError 500: Backend Error使用导入行上传 Fusion Tables 数据失败,出现 Http 错误 500:后端错误
【发布时间】:2014-07-02 18:32:53
【问题描述】:

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

我从文件“testCsv.csv”开始,并希望将其完全导入现有的 Fusion Table。这样做有一个很好的概念解释here

概念示例说明 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?还是在使用这种方法时我还缺少什么?

【问题讨论】:

    标签: python google-api google-fusion-tables google-api-python-client


    【解决方案1】:

    自从发布这个问题以来,我了解到application/octet-stream 类似于说类型是任何东西。我还发现了我使用importRows 的问题所在。 method documentation 表示

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2022-08-04
      相关资源
      最近更新 更多