由於最近的issues with the Google Apps Script ScriptDB我們最終在ScriptDB中出現了許多重複記錄。刪除Google Apps腳本ScriptDB中的重複項
我們有一個應用程序從外部系統檢索數據,並存儲在ScriptDB中,如果該數據尚不存在。但是由於最近ScriptDB的問題檢查存在失敗。我們的腳本不斷添加相同的數據。我們怎麼去清理重複的東西?我們只需要每個數據記錄的一個副本。
由於最近的issues with the Google Apps Script ScriptDB我們最終在ScriptDB中出現了許多重複記錄。刪除Google Apps腳本ScriptDB中的重複項
我們有一個應用程序從外部系統檢索數據,並存儲在ScriptDB中,如果該數據尚不存在。但是由於最近ScriptDB的問題檢查存在失敗。我們的腳本不斷添加相同的數據。我們怎麼去清理重複的東西?我們只需要每個數據記錄的一個副本。
因爲那個應用程序錯誤,我不得不重新創建許多bds。 我刪除了整個bd並手動重新創建,因爲我不信任可能仍然損壞的條目。 如果它不是很大,可以將它轉儲到電子表格上並手動刪除它們,然後重新創建bd。 它不只是dups,你可能也有類似的對象,因爲它們被重新創建,後來只有一個被更新。
如果您爲數據庫中的條目分配了自己的唯一ID,那麼您可以遍歷所有可能的ID,查找具有多個條目的ID。我不會寫全的代碼,但是這是一個大致輪廓:
1. Generate an array of all possible IDs
2. For each ID in array, query ScriptDB for items with that ID
3. If results.length > 1, remove the extras
4. Goto 2
5. Finish
當然,這將需要更長的時間超過6分鐘內,成千上萬的記錄100S,所以你需要一些代碼來保存/負載狀態。我使用ScriptProperties來保存我在數組中的位置。然後我有一個函數來確定我是否已達到5.5分鐘,此時我會停止以避免「超出最大執行時間」錯誤。
如果您還沒有使用唯一的ID,那麼爲了防止將來出現這種情況,您可能需要更多的邏輯來添加到數據庫保存功能中。
是的,我們確實有每個記錄的字母數字唯一ID。你能否提供一些代碼來實現你的建議?謝謝。 –
那麼我有成千上萬的條目。所以重新創建數據庫並不是一個真正的選擇...... –
不要對任何大型或任何關鍵的東西使用scriptdb。它不是第一次在scriptdb中引起不可逆轉的腐敗。 –
我相信Google正在努力改進ScriptDB服務。我認爲這是一項很有潛力的優秀服務。 –