Jak wykonać kopię zapasową bazy danych SQLite do pliku.
Istnieje kilka sposobów tworzenia kopii zapasowej bazy danych SQLite do pliku.
- Użyj
.backup
polecenie. - Użyj
.clone
polecenie. - Użyj
.dump
polecenie. - Skopiuj plik do systemu plików.
.backup
Polecenie
To polecenie tworzy kopię zapasową bazy danych do pliku. Akceptuje alias bazy danych (tj. Baza danych do kopii zapasowej) i nazwę pliku (dla pliku kopii zapasowej).
Jeśli pominiesz alias bazy danych, użyje on main
baza danych.
Oto przykład:
.backup mybackup.db
Spowoduje to utworzenie pliku o nazwie
backup.db
zawierający kopię zapasową bazy danych. W razie potrzeby możesz dołączyć to z powrotem do powłoki wiersza poleceń SQLite3 (następnie wykonaj .databases
aby wyświetlić listę połączeń z bazą danych):
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
W praktyce prawdopodobnie wykonałbyś kopię zapasową bazy danych w innej lokalizacji. Dlatego powinieneś podać pełną ścieżkę do pliku w .backup
Komenda. Na przykład .backup /remote/folder/mybackup.db
.clone
Polecenie
.clone
polecenie jest podobne do .backup
Komenda. Jednak .clone
używa tylko bieżącej bazy danych, więc nie możesz określić innej bazy danych do sklonowania.
Aby sklonować bieżącą bazę danych, wpisz .clone
po którym następuje nazwa pliku bazy danych dla sklonowanych danych.
Tak:
.clone myclone.db
Bieganie wygląda tak:
sqlite> .clone myclone.db Artists... done Albums... done Albums2... done Catalog... done Genres... done
Możesz dołączyć sklonowaną bazę danych tak samo jak drugą:
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
.dump
Polecenie
Możesz użyć .dump
polecenie, aby zrzucić bazę danych do pliku ASCII. Na przykład możesz zrzucić go do pliku .sql, który zawiera instrukcje SQL, z których ma zostać wygenerowana baza danych.
Zrzuć całą bazę danych
Ten przykład zrzuca plik music.db plik do music.sql .
sqlite3 music.db .dump > music.sql
Zawartość music.sql (wymagane przewijanie):
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;
Skopiuj plik
Powyższe metody umożliwiają wykonanie kopii zapasowej bazy danych z poziomu powłoki wiersza poleceń SQLite3.
Możesz także wykonać kopię zapasową bazy danych, po prostu kopiując/wklejając fizyczny plik do systemu plików.
Jeśli nie masz pewności co do lokalizacji fizycznego pliku, możesz użyć .databases
polecenie, aby znaleźć lokalizację:
sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp
Uzbrojony w powyższą wiedzę, mogę teraz przejść do /Users/quackit/sqlite/ katalogu, skopiuj music.db plik i wklej go w bezpieczne miejsce.