Een back-up maken van een SQLite-database naar een bestand.
Er zijn verschillende manieren om een back-up te maken van een SQLite-database naar een bestand.
- Gebruik de
.backup
commando. - Gebruik de
.clone
commando. - Gebruik de
.dump
commando. - Kopieer het bestand naar het bestandssysteem.
De .backup
Commando
Deze opdracht maakt een back-up van een database naar een bestand. Het accepteert een database-alias (d.w.z. de database waarvan een back-up moet worden gemaakt) en een bestandsnaam (voor het back-upbestand).
Als u de database-alias weglaat, gebruikt deze de main
database.
Hier is een voorbeeld:
.backup mybackup.db
Hiermee wordt een bestand gemaakt met de naam
backup.db
met daarin een back-up van de database. U kunt dit desgewenst weer toevoegen aan de SQLite3-opdrachtregelshell (doe vervolgens een .databases
om de lijst met databaseverbindingen te bekijken):
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 de praktijk zou u waarschijnlijk een back-up van de database naar een andere locatie maken. Daarom geeft u het volledige bestandspad op in de .backup
opdracht. Bijvoorbeeld .backup /remote/folder/mybackup.db
De .clone
Commando
De .clone
opdracht is vergelijkbaar met de .backup
opdracht. Echter, .clone
gebruikt alleen de huidige database, dus u kunt geen andere database specificeren om te klonen.
Om de huidige database te klonen, typt u .clone
gevolgd door de naam van het databasebestand voor de gekloonde gegevens.
Zoals dit:
.clone myclone.db
Hardlopen dat er als volgt uitziet:
sqlite> .clone myclone.db Artists... done Albums... done Albums2... done Catalog... done Genres... done
U kunt de gekloonde database net als de andere koppelen:
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
De .dump
Commando
U kunt de .dump
. gebruiken commando om de database naar een ASCII-bestand te dumpen. U kunt het bijvoorbeeld dumpen naar een .sql-bestand dat de SQL-instructies bevat waaruit de database moet worden gegenereerd.
Dump de hele DB
Dit voorbeeld dumpt de music.db bestand naar music.sql .
sqlite3 music.db .dump > music.sql
Inhoud van music.sql (scrollen vereist):
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;
Kopieer het bestand
Met de bovenstaande methoden kunt u een back-up maken van een database vanuit de SQLite3-opdrachtregelshell.
U kunt ook een back-up van een database maken door het fysieke bestand op het bestandssysteem te kopiëren/plakken.
Als u niet zeker bent van de locatie van het fysieke bestand, kunt u de .databases
. gebruiken commando om de locatie te vinden:
sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp
Dus gewapend met de bovenstaande kennis, kan ik nu navigeren naar de /Users/quackit/sqlite/ map, kopieer de music.db bestand en plak het op een veilige locatie.