1

ミッション クリティカルなデータベースを定期的にバックアップする必要があり、それを GAS に scriptdb として保存する場合、実際のデータベース ファイルをバックアップする方法はありますか? db は、スクリプトの外では見えないように埋め込まれているようですか?

4

4 に答える 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

予想外の場所で、上記の質問に対する適切な解決策を見つけたと思います。scriptdb を使用する代わりに、Google Fusion Table/s を使用できます。これらには SQL タイプのアクセスがあり、エクスポート、バックアップ、表示などが可能な具体的なドキュメントであり、アプリのデータ ストアとして機能できます...

于 2012-07-18T18:50:22.720 に答える
1

実際の答えは次のとおりです。ミッション クリティカルなデータを scriptdb に保存しないのには、多くの理由があります。

  1. appscript には SLA がありません。Google には、保証のある他の多くのストレージがあります。
  2. そのデータベースはトランザクションをサポートしていないため、バッチ プロセスが同じデータを 2 回処理する可能性があることを保証できません (チャンク バックアップまたは復元の途中でスクリプトが失敗した場合)。
  3. データベース内の他のオブジェクト内に ID を格納すると、複雑になります。
于 2012-11-07T23:02:34.773 に答える
0

おそらく、重要なデータを scriptdb から Google スプレッドシートにコピーできます。Google 開発者の例を考えると、これは興味深いオプションだと思います。

リンクは次のとおりです。Copy a Database to a New Sheet in a Spreadsheet

于 2012-07-10T18:28:58.393 に答える