Come eseguire il backup di un database SQLite in un file.
Esistono diversi modi per eseguire il backup di un database SQLite su file.
- Usa il
.backup
comando. - Usa il
.clone
comando. - Usa il
.dump
comando. - Copia il file sul file system.
Il .backup
Comando
Questo comando esegue il backup di un database in un file. Accetta un alias di database (ovvero il database di cui eseguire il backup) e un nome file (per il file di backup).
Se ometti l'alias del database, utilizzerà il main
banca dati.
Ecco un esempio:
.backup mybackup.db
Questo creerà un file chiamato
backup.db
contenente un backup del database. Se necessario, puoi ricollegarlo alla shell della riga di comando di SQLite3 (quindi esegui un .databases
per visualizzare l'elenco delle connessioni al database):
sqlite> ATTACH DATABASE 'mybackup.db' AS MyBackup; sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp 2 MyBackup /Users/quackit/sqlite/mybackup.db
In pratica, probabilmente eseguiresti il backup del database in una posizione diversa. Pertanto, dovresti fornire il percorso completo del file in .backup
comando. Ad esempio, .backup /remote/folder/mybackup.db
Il .clone
Comando
Il .clone
il comando è simile a .backup
comando. Tuttavia, .clone
utilizza solo il database corrente, quindi non puoi specificare un altro database da clonare.
Per clonare il database corrente, digita .clone
seguito dal nome del file di database per i dati clonati.
In questo modo:
.clone myclone.db
In esecuzione che assomiglia a questo:
sqlite> .clone myclone.db Artists... done Albums... done Albums2... done Catalog... done Genres... done
Puoi allegare il database clonato proprio come l'altro:
sqlite> ATTACH DATABASE 'myclone.db' AS MyClone; sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp 2 MyBackup /Users/quackit/sqlite/mybackup.db 3 MyClone /Users/quackit/sqlite/myclone.db
Il .dump
Comando
Puoi usare il .dump
comando per eseguire il dump del database in un file ASCII. Ad esempio, puoi scaricarlo in un file .sql che contiene le istruzioni SQL da cui generare il database.
Scarica l'intero DB
Questo esempio esegue il dump di music.db file in music.sql .
sqlite3 music.db .dump > music.sql
Contenuti di music.sql (scorrimento obbligatorio):
PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE Artists( ArtistId INTEGER PRIMARY KEY, ArtistName TEXT NOT NULL , Bio TEXT); INSERT INTO "Artists" VALUES(1,'Joe Satriani',NULL); INSERT INTO "Artists" VALUES(2,'Steve Vai',NULL); INSERT INTO "Artists" VALUES(3,'The Tea Party',NULL); INSERT INTO "Artists" VALUES(4,'Noiseworks',NULL); INSERT INTO "Artists" VALUES(5,'Wayne Jury',NULL); INSERT INTO "Artists" VALUES(6,'Mr Percival',NULL); INSERT INTO "Artists" VALUES(7,'Iron Maiden',NULL); INSERT INTO "Artists" VALUES(8,'Atmasphere','Australian jazz band centred around polyrhythms.'); INSERT INTO "Artists" VALUES(9,'Ian Moss',NULL); INSERT INTO "Artists" VALUES(10,'Magnum',NULL); INSERT INTO "Artists" VALUES(13,'Primus',NULL); INSERT INTO "Artists" VALUES(14,'Pat Metheny',NULL); INSERT INTO "Artists" VALUES(15,'Frank Gambale',NULL); INSERT INTO "Artists" VALUES(16,'Mothers of Invention',NULL); CREATE TABLE Albums( AlbumId INTEGER PRIMARY KEY, AlbumName TEXT NOT NULL, ReleaseDate TEXT, ArtistId INTEGER NOT NULL, FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId) ); INSERT INTO "Albums" VALUES(1,'Killers','1981',7); INSERT INTO "Albums" VALUES(2,'Powerslave','1984',7); INSERT INTO "Albums" VALUES(3,'Surfing with the Alien','1987',1); INSERT INTO "Albums" VALUES(4,'Heavy as a Really Heavy Thing','1995',11); INSERT INTO "Albums" VALUES(6,'Out of the Loop','2007',6); INSERT INTO "Albums" VALUES(7,'Suck on This','1989',13); INSERT INTO "Albums" VALUES(8,'Pork Soda','1993',13); INSERT INTO "Albums" VALUES(9,'Sailing the Seas of Cheese','1991',13); INSERT INTO "Albums" VALUES(10,'Flying in a Blue Dream','1989',1); INSERT INTO "Albums" VALUES(11,'Black Swans and Wormhole Wizards','2010',1); INSERT INTO "Albums" VALUES(12,'Somewhere in Time','1986',7); CREATE TABLE Albums2( AlbumId INT, AlbumName TEXT, ArtistId INT ); INSERT INTO "Albums2" VALUES(1,'Killers',7); INSERT INTO "Albums2" VALUES(2,'Powerslave',7); INSERT INTO "Albums2" VALUES(3,'Surfing with the Alien',1); INSERT INTO "Albums2" VALUES(4,'Heavy as a Really Heavy Thing',11); INSERT INTO "Albums2" VALUES(5,'Yummy Yummy',17); INSERT INTO "Albums2" VALUES(6,'Out of the Loop',6); INSERT INTO "Albums2" VALUES(7,'Suck on This',13); INSERT INTO "Albums2" VALUES(8,'Pork Soda',13); INSERT INTO "Albums2" VALUES(9,'Sailing the Seas of Cheese',13); INSERT INTO "Albums2" VALUES(10,'Flying in a Blue Dream',1); INSERT INTO "Albums2" VALUES(11,'Black Swans and Wormhole Wizards',1); INSERT INTO "Albums2" VALUES(12,'Somewhere in Time',7); INSERT INTO "Albums2" VALUES(13,'Big Red Car',17); CREATE TABLE Catalog( "AlbumId" TEXT, "AlbumName" TEXT, "ArtistName" TEXT ); INSERT INTO "Catalog" VALUES('1','Killers','Iron Maiden'); INSERT INTO "Catalog" VALUES('2','Powerslave','Iron Maiden'); INSERT INTO "Catalog" VALUES('12','Somewhere in Time','Iron Maiden'); INSERT INTO "Catalog" VALUES('3','Surfing with the Alien','Joe Satriani'); INSERT INTO "Catalog" VALUES('10','Flying in a Blue Dream','Joe Satriani'); INSERT INTO "Catalog" VALUES('11','Black Swans and Wormhole Wizards','Joe Satriani'); INSERT INTO "Catalog" VALUES('6','Out of the Loop','Mr Percival'); INSERT INTO "Catalog" VALUES('7','Suck on This','Primus'); INSERT INTO "Catalog" VALUES('8','Pork Soda','Primus'); INSERT INTO "Catalog" VALUES('9','Sailing the Seas of Cheese','Primus'); CREATE TABLE Genres( GenreId INTEGER PRIMARY KEY, Genre TEXT NOT NULL ); INSERT INTO "Genres" VALUES(1,'Rock'); INSERT INTO "Genres" VALUES(2,'Country'); INSERT INTO "Genres" VALUES(3,'Pop'); INSERT INTO "Genres" VALUES(4,'Comedy'); INSERT INTO "Genres" VALUES(5,'Jazz'); INSERT INTO "Genres" VALUES(6,'Blues'); INSERT INTO "Genres" VALUES(7,'Techno'); COMMIT;
Copia il file
I metodi precedenti consentono di eseguire il backup di un database dall'interno della shell della riga di comando di SQLite3.
Puoi anche eseguire il backup di un database semplicemente copiando/incollando il file fisico sul filesystem.
Se non sei sicuro della posizione del file fisico, puoi utilizzare il .databases
comando per trovare la posizione:
sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp
Quindi, armato delle conoscenze di cui sopra, ora posso passare a /Users/quackit/sqlite/ directory, copia music.db file e incollalo in una posizione sicura.