如何备份Google Apps脚本的scriptdb

时间:2012-07-10 13:15:36

标签: google-apps-script

如果我有一个任务关键数据库,需要定期备份,并将其存储为GAS中的scriptdb,有没有办法备份实际的数据库文件?似乎db的嵌入方式使其在脚本之外不可见?

4 个答案:

答案 0 :(得分:3)

好吧,您可以随时查询所有值并JSON.stringify查询它们。 如果您需要从中恢复数据库,我可以注意到的唯一区别是每个项目ID都会发生变化。

以下是一个例子:

function backupDB() {
  var db = ScriptDb.getMyDb();
  var res = db.query({});
  var array = [];
  while( res.hasNext() )
    array.push(res.next().toJson());
  var dbString = JSON.stringify(array);
  Logger.log(dbString); //you'll obviously save this string somewhere else e.g. as a docs file
}

您可能还需要以块的形式执行此操作,因为您的数据库可能有太多数据供脚本一次处理,就像这样。

我也觉得这个“备份”程序也应该由API来处理。上面的代码只是我刚才的一个想法。

答案 1 :(得分:1)

我认为我在上面的问题中找到了一个不错的解决方案,在一个意想不到的地方。我可以使用Google Fusion表,而不是使用scriptdb,它们具有SQL类型的访问权限,是可以导出,备份,查看等的具体文档,并且可以充当我的应用程序的数据存储... < / p>

答案 2 :(得分:1)

实际答案是:您没有在Scriptdb上存储关键任务数据,原因有很多:

  1. appscript没有SLA。谷歌还有很多其他存储设备都有保证。
  2. 由于该数据库不支持事务,因此您无法保证批处理可能会处理相同数据的两倍(如果脚本在块备份或还原过程中出现故障)。
  3. 如果将id存储在db中的其他对象中,它将变得复杂。

答案 3 :(得分:0)

也许您可以将关键数据从scriptdb复制到Google电子表格。鉴于其在Google开发人员中的一个例子,我认为这是一个有趣的选择。

以下是链接:Copy a Database to a New Sheet in a Spreadsheet