web-dev-qa-db-fra.com

Comment sauvegarder une base de données sqlite?

Quelle est la bonne façon de le faire? Dois-je simplement copier le fichier .sq3?

Que se passe-t-il s'il y a des utilisateurs sur le site et si le fichier est en cours d'écriture pendant la copie?

78
thelolcat

L'outil de ligne de commande sqlite3 contient le .backup commande à points .

Vous pouvez vous connecter à votre base de données avec:

sqlite3 my_database.sq3

et exécutez la commande de sauvegarde de points avec:

.backup backup_file.sq3

À la place de la connexion interactive à la base de données, vous pouvez également effectuer la sauvegarde, puis fermer la connexion avec

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

Dans les deux cas, le résultat est une copie nommée backup_file.sq3 de la base de données my_database.sq3.

C'est différent de la copie de fichier régulière, car elle prend en charge tous les utilisateurs travaillant actuellement sur la base de données. La base de données est correctement verrouillée, la sauvegarde est donc effectuée exclusivement.

133
Googie

.backup est le meilleur moyen.

sqlite3 my_database .backup my_database.back

vous pouvez également essayer la commande .dump, elle vous donne la possibilité de vider toute la base de données ou les tables dans un fichier texte. Si TABLE est spécifié, seules les tables de vidage correspondant au modèle LIKE TABLE.

sqlite3 my_database .dump > my_database.back

Un bon moyen de créer une copie d'archivage à l'aide de dump et de stocker, reconstruisez la base de données ultérieurement.

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

Vérifiez également cette question Les commandes SQLite3 .backup et .dump verrouillent-elles la base de données?

2
Lava Sangeetham