如果我有一个关键任务数据库,需要定期备份,并且我将它作为脚本数据库存储在 GAS 中,有没有办法备份实际的数据库文件?似乎数据库的嵌入方式使其在脚本之外不可见?
问问题
1147 次
4 回答
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 来处理。上面的代码只是我刚刚的一个想法。
于 2012-07-10T13:50:49.963 回答
1
我想我在一个意想不到的地方为我的问题找到了不错的解决方案。我可以使用 Google Fusion Table/s,而不是使用 scriptdb - 它们具有 SQL 类型的访问权限,是可以导出、备份、查看等的具体文档,并且可以充当我的应用程序的数据存储...
于 2012-07-18T18:50:22.720 回答
1
实际答案是:您不会将关键任务数据存储在 scriptdb 中,原因有很多:
- appscript 没有 SLA。谷歌有许多其他存储有保证。
- 因为该数据库不支持事务,您将无法保证批处理可能处理两次相同的数据(如果脚本在块备份或恢复过程中失败)。
- 如果将 id 存储在数据库中的其他对象中,它会变得复杂。
于 2012-11-07T23:02:34.773 回答
0
也许您可以将关键数据从 scriptdb 复制到 Google 电子表格。鉴于它在谷歌开发人员中的一个例子,我认为这是一个有趣的选择。
这是链接:将数据库复制到电子表格中的新工作表。
于 2012-07-10T18:28:58.393 回答