如何使用 .NET Google.Apis.Fusiontables.v2(流 csv)中的 ReplaceRows?

How to use ReplaceRows from .NET Google.Apis.Fusiontables.v2 (stream csv)?

目标:通过使用 csv 文件中的新行替换旧行来更新 Fusion Table,而无需 headers 使用 ReplaceRows()。

我正在使用 Google.Apis.Fusiontables.v2 库。

我已经反复阅读 documentation,但我的代码仍然无法正常工作。

身份验证有效,我可以毫无问题地执行简单的插入操作:

string sql = "INSERT INTO 11t9VLt3vzb46oGQMaS2LTSPWUyBYNcfi1shkmvag (rpu_id, NO_BAIL, 'Usage (description)', 'Use (description)', 'Sup. louable m2', 'Sup. Utilisable m2', 'SumTotal Lou', 'Percent Lou', 'SumTotal Util', 'Percent Util') VALUES (9999,1111,'Test','Test En',1,2,3,4,5,6)"
Sqlresponse sqlRspnse = service.Query.Sql(sql).Execute();

我已经尝试了 ReplaceRowsMediaUploadReplaceRowsMediaUpload 直接从 Table 资源 class 尝试了,但没有成功。

从服务 object 调用上传功能不会出错,但我不确定接下来要做什么实际上会替换 Fusion Table 中的行(服务是一个 FusiontablesService):

StreamReader str = new StreamReader(Server.MapPath("~") + @"\sample2.csv");
service.Table.ReplaceRows("1X7JMLFy75uq20UnU6cLrGTTDfp6lLuD1Fc3vYYjQ", str.BaseStream, "text/csv").Upload();

我试过:

service.Table.ReplaceRows("1X7JMLFy75uq20UnU6cLrGTTDfp6lLuD1Fc3vYYjQ").Execute()

上传后,但这只是将 Fusion table 置于 "stuck" 模式。

有人可以提供使 ReplaceRows 工作所需的行吗? (解释将不胜感激,但不是必需的!)。

您可以使用 REST API 调用直接替换 Google Fusion table 中的行,而无需编写方法来执行此操作。这是一个例子:

POST https://www.googleapis.com/upload/fusiontables/v2/tables/tableId/replace

更多细节请参考this文档,它也有测试环境工具。

您应该将 "text/csv" 更改为 "application/octet-stream"。 (在此处查看接受的 MIME 类型:https://developers.google.com/fusiontables/docs/v2/reference/table/replaceRows

StreamReader str = new StreamReader(Server.MapPath("~") + @"\sample2.csv");
service.Table.ReplaceRows("1X7JMLFy75uq20UnU6cLrGTTDfp6lLuD1Fc3vYYjQ", str.BaseStream, "application/octet-stream").Upload();

上传调用应该足够了。

另外,尝试创建一个新的 table 来测试它,确保它设置正确。