目标:通过使用ReplaceRows()从没有标头的csv文件中替换旧行来更新旧表。
我正在使用Google.Apis.Fusiontables.v2库。
我已阅读并重新阅读documentation,但仍然无法使我的代码正常工作。
身份验证正在运行,我可以毫无问题地执行简单的INSERT:
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();
我没有直接从TableResource类尝试ReplaceRowsMediaUpload
和ReplaceRowsMediaUpload
。
从服务对象调用上传函数不会出错,但我不确定下一步该做什么会实际替换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表置于“卡住”模式。
有人可以提供使ReplaceRows工作所需的行吗? (解释将不胜感激,但不是必要的!)。
答案 0 :(得分:2)
您应该为“application / octet-stream”更改“text / csv”。 (请参阅此处接受的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();
对上传的调用应该足够了。
另外,尝试创建一个新表来测试它,以确保它设置正确。
答案 1 :(得分:0)
您可以使用REST API调用直接替换Google Fusion表中的行,而不是编写方法来执行此操作。这是一个例子:
POST https://www.googleapis.com/upload/fusiontables/v2/tables/tableId/replace
有关详细信息,请参阅this文档,它也有测试环境工具。