0

我可以通过 QueryString sql 参数插入行。https://developers.google.com/fusiontables/docs/v1/reference/query/sql?hl=ja

但是参考文档描述了您可以使用 sql 参数作为 POST 的主体来插入行。我不能。我该怎么办?https://developers.google.com/fusiontables/docs/v1/using?hl=ja#insertRow

第一个参考描述了必需的 QueryString sql 参数。我通过在 QueryString 中省略 sql 得到错误 400。使用 QueryString 有限制(URL 长度)。我想在 POST 正文中插入许多行。

要求:

POST https://www.googleapis.com/fusiontables/v1/query?access_token={my access token} HTTP/1.1
Content-Type: application/json
sql=INSERT INTO 1JOgUG5QWE5hybrDAd2GX3yfjVCGoM6u7WkSVDok ('_id', '_count', 'start_time', 'end_time',  'counts', 'start_plaece', 'end_place', 'distance',  'average_speed', 'send_flag', 'time_span', 'train_type',  'calories', 'weight', 'status', 'map_url', 'rally_id' ) VALUES ('-1', '0', '2013/01/19 09:00:00.000', '2013/01/19 12:34:56.000', '9876', 'Tokorozawa3', 'iidabashi2', '45678',  '67', '0', '986532', '1', '389', '77.70', '0', 'http://www.google.com/',  '3');

回复:

body {
  "error": {
   "errors": [
    {
     "domain": "global",
     "reason": "required",
     "message": "Required parameter: sql",
     "locationType": "parameter",
     "location": "sql"
    }
   ],
   "code": 400,
   "message": "Required parameter: sql"
  }
}
4

1 回答 1

1

文档有问题,缺少一些细节。

您可以在请求 url中使用 sql=...参数。ContentType 标头通常是 application/json 但 API 也可能接受其他标头。在这种情况下,您的 URL 长度限制为 2048 个字符。

您还可以在 POST body 中使用 sql=... 。在这种情况下,您必须将ContentType 设置为 application/x-www-form-urlencoded。您在 1 个请求中限制为 500 个 INSERT 语句。

另一种选择是使用 importRows 方法。在这里,您将使用CSV 作为 POST 正文。在这种方法中,您会受到 100MB 上传数据的限制。ContentType 必须是 "application/octet-stream"。更多详细信息:importRows 参考

于 2013-03-29T13:09:50.413 回答