由于最近的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服务。我认为这是一项很有潜力的优秀服务。 –