sql >> Database >  >> RDS >> SQLite

SQLite - Back-up van een database naar bestand

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.


  1. C#:Object kan niet van DbNull naar andere typen worden gecast

  2. Slaapstand gebruikersmodel opslaan in Postgres

  3. Database importeren/exporteren met SQL Server Server Management Studio

  4. Maak een Excel-bestand (.xlsx) met PL/SQL