web-dev-qa-db-ja.com

sqliteデータベースをバックアップする方法は?

それを行う適切な方法は何ですか? .sq3ファイルをコピーするだけですか?

サイトにユーザーがいて、コピー中にファイルが書き込まれた場合はどうなりますか?

78
thelolcat

Sqlite3コマンドラインツールは、 .backupドットコマンド を備えています。

次の方法でデータベースに接続できます。

sqlite3 my_database.sq3

そして、次のコマンドでbackup dotコマンドを実行します。

.backup backup_file.sq3

データベースへのインタラクティブな接続の代わりに、バックアップを行い、その後で接続を閉じることもできます

sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"

いずれにしても、結果はデー​​タベースのbackup_file.sq3という名前のコピーmy_database.sq3です。

現在データベースで作業しているすべてのユーザーの面倒を見るので、定期的なファイルコピーとは異なります。データベースには適切なロックが設定されているため、バックアップは排他的に行われます。

133
Googie

.backupが最善の方法です。

sqlite3 my_database .backup my_database.back

.dumpコマンドを試すこともできます。これにより、データベース全体またはテーブル全体をテキストファイルにダンプできます。 TABLEが指定されている場合、LIKEパターンTABLEと一致するテーブルのみをダンプします。

sqlite3 my_database .dump > my_database.back

ダンプとストアを使用してアーカイブコピーを作成する良い方法は、後でデータベースを再構築します。

sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database

この質問も確認してください SQLite3の.backupおよび.dumpコマンドはデータベースをロックしますか?

2
Lava Sangeetham