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
.backupcommando. - Gebruik de
.clonecommando. - Gebruik de
.dumpcommando. - 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.