SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite - Sichern Sie eine Datenbank in eine Datei

So sichern Sie eine SQLite-Datenbank in einer Datei.

Es gibt mehrere Möglichkeiten, eine SQLite-Datenbank in einer Datei zu sichern.

  • Verwenden Sie die Datei .backup Befehl.
  • Verwenden Sie den .clone Befehl.
  • Verwenden Sie die .dump Befehl.
  • Kopieren Sie die Datei auf das Dateisystem.

Die .backup Befehl

Dieser Befehl sichert eine Datenbank in einer Datei. Es akzeptiert einen Datenbank-Alias ​​(d. h. die zu sichernde Datenbank) und einen Dateinamen (für die Sicherungsdatei).

Wenn Sie den Datenbankalias weglassen, wird main verwendet Datenbank.

Hier ist ein Beispiel:

.backup mybackup.db

Dadurch wird eine Datei namens backup.db erstellt enthält eine Sicherung der Datenbank. Sie können dies bei Bedarf wieder in die SQLite3-Befehlszeilen-Shell einfügen (dann führen Sie eine .databases um die Liste der Datenbankverbindungen anzuzeigen):

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 der Praxis würden Sie die Datenbank wahrscheinlich an einem anderen Ort sichern. Daher würden Sie den vollständigen Dateipfad in .backup angeben Befehl. Beispiel:.backup /remote/folder/mybackup.db

Der .clone Befehl

Die .clone Der Befehl ähnelt dem .backup Befehl. Allerdings .clone verwendet nur die aktuelle Datenbank, Sie können also keine andere Datenbank zum Klonen angeben.

Um die aktuelle Datenbank zu klonen, geben Sie .clone ein gefolgt vom Namen der Datenbankdatei für die geklonten Daten.

So:

.clone myclone.db

Laufend sieht das so aus:

sqlite> .clone myclone.db
Artists... done
Albums... done
Albums2... done
Catalog... done
Genres... done

Sie können die geklonte Datenbank genauso anhängen wie die andere:

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      

Die .dump Befehl

Sie können die .dump verwenden Befehl zum Sichern der Datenbank in eine ASCII-Datei. Beispielsweise könnten Sie es in eine .sql-Datei ausgeben, die die SQL-Anweisungen zum Generieren der Datenbank enthält.

Entleeren Sie die gesamte DB

Dieses Beispiel gibt die music.db aus Datei in music.sql .

sqlite3 music.db .dump > music.sql

Inhalt von music.sql (Scrollen erforderlich):

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;

Kopieren Sie die Datei

Mit den obigen Methoden können Sie eine Datenbank von der SQLite3-Befehlszeilen-Shell aus sichern.

Sie können eine Datenbank auch einfach sichern, indem Sie die physische Datei in das Dateisystem kopieren/einfügen.

Wenn Sie nicht sicher sind, wo sich die physische Datei befindet, können Sie die .databases verwenden Befehl, um den Speicherort zu finden:

sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /Users/quackit/sqlite/music.db                            
1    temp                                                                

So bewaffnet mit dem oben genannten Wissen kann ich jetzt zu /Users/quackit/sqlite/ navigieren kopieren Sie die music.db Datei, und fügen Sie sie an einem sicheren Ort ein.