目标:使用ReplaceRows()更新融合表,将旧行替换为csv文件中的新行,而不使用头。
我正在使用Google.Apis.Fusiontables.v2库。
我已经阅读和重新阅读了文档,但仍然无法使我的代码工作。
身份验证是有效的,我能够执行简单的插入操作,而不存在任何问题:
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();我在没有运气的情况下直接从ReplaceRowsMediaUpload类中尝试了TableResource和ReplaceRowsMediaUpload。
从服务对象调用upload函数不会出错,但我不知道下一步该做什么来替换融合表中的行(服务是FusiontablesService):
StreamReader str = new StreamReader(Server.MapPath("~") + @"\sample2.csv");
service.Table.ReplaceRows("1X7JMLFy75uq20UnU6cLrGTTDfp6lLuD1Fc3vYYjQ", str.BaseStream, "text/csv").Upload();我试过:
service.Table.ReplaceRows("1X7JMLFy75uq20UnU6cLrGTTDfp6lLuD1Fc3vYYjQ").Execute()上传之后,但这只是将融合表置于“卡住”模式。
有人能提供使ReplaceRows工作所需的线路吗?(解释是很感激的,但没有必要!)
发布于 2015-01-15 17:11:54
您应该将"text/csv“改为”application/octet“。(请参见此处接受的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();上传的电话应该就够了。
另外,尝试创建一个新表来测试它,以确保它的设置是正确的。
发布于 2015-01-10 01:32:24
您可以使用REST调用来直接替换Google表中的一行,而不是编写方法来这样做。下面是一个示例:
POST https://www.googleapis.com/upload/fusiontables/v2/tables/tableId/replace请参考这文档获得更多细节,它也有一个测试环境工具。
https://stackoverflow.com/questions/27848516
复制相似问题