[Android] Parse.com 的資料匯入

有些APP會將不經常變動的特定資料儲存在 Parse 平台上,然後不定期更新資料,讓用戶讀取。

然而 Parse 不建議將 Table 內的資料清空後再重新匯入,因為該平台已針對既有的資料作查詢最佳化。本魯實測結果也證實,資料重新匯入後,查詢速度變得很慢,需要等待幾天時間,讓Parse將查詢重新最佳化,才能恢復正常的查詢速度。

所以建議若有資料整批更新的需求,就新增一個 Table,將新資料匯入新 Table,然後把 APP 改存取新 Table 的資料,等到查詢效能測試到可以接受的程度,再行上架。

至於整批匯入的部分,Parse 提供了 Restful API,因此可以自己寫程式來做整批匯入。不過Parse 官方提供的 API 有一些限制,首先,無法對單一 Table 做資料全部刪除的動作,只能一次刪除一千筆資料,此外也限制了資料在一定時間內存取的上限,所以在做資料大量匯入時,常會發生 Timeout 導致連線中斷。

Parse 官方也提供了 Node.js 套件,相較於 Restful API,官方的 Node.js 套件有提供方法,可以做單一 Table 資料的全部刪除,以下是範例。
function deleteRecords(objectName) {

  var query = new Parse.Query(objectName);
    query.find().then(function(results) {
        return Parse.Object.destroyAll(results);
    }).then(function() {        
        return console.log('Deleted');
    }, function(error) {        
        return console.log('Error');
    });
}

個人建議,不要直接寫程式對 Parse 做整批匯入資料的動作,我目前是用 Python 將資料傳為可匯入 Parse 平台的 Json 檔,再手動匯入。以下提供程式範例,這是從台北市開放資料平台,抓取各區垃圾桶的資料,再全部合併為一個Json檔。基本上 Python 語法蠻好上手的,比較困難的是在處理資料和檔案的編碼。
(這個範例用的是 Python2,沒特別的原因,因為 Mac 預裝 Python2)

相關文章

如何將電腦畫面經由 Chromecast 投放到電視螢幕上

Chrome 的檔案續傳功能

Mac與Android裝置傳輸檔案的方法

使用 Vysor 在電腦上控制 Android 裝置