sql >> Base de Datos >  >> RDS >> SQLite

SQLite - Copia de seguridad de una base de datos en un archivo

Cómo hacer una copia de seguridad de una base de datos SQLite en un archivo.

Hay varias formas de hacer una copia de seguridad de una base de datos SQLite en un archivo.

  • Utilice .backup comando.
  • Use .clone comando.
  • Utilice el .dump comando.
  • Copie el archivo en el sistema de archivos.

El .backup Comando

Este comando realiza una copia de seguridad de una base de datos en un archivo. Acepta un alias de base de datos (es decir, la base de datos para respaldar) y un nombre de archivo (para el archivo de respaldo).

Si omite el alias de la base de datos, utilizará el main base de datos.

He aquí un ejemplo:

.backup mybackup.db

Esto creará un archivo llamado backup.db que contiene una copia de seguridad de la base de datos. Puede adjuntar esto nuevamente al shell de línea de comandos de SQLite3 si es necesario (luego haga un .databases para ver la lista de conexiones de base de datos):

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    

En la práctica, probablemente haría una copia de seguridad de la base de datos en una ubicación diferente. Por lo tanto, proporcionaría la ruta completa del archivo en .backup dominio. Por ejemplo, .backup /remote/folder/mybackup.db

El .clone Comando

El .clone El comando es similar a .backup dominio. Sin embargo, .clone solo usa la base de datos actual, por lo que no puede especificar otra base de datos para clonar.

Para clonar la base de datos actual, escriba .clone seguido del nombre del archivo de la base de datos para los datos clonados.

Así:

.clone myclone.db

Corriendo que se ve así:

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

Puede adjuntar la base de datos clonada como la otra:

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      

El .dump Comando

Puedes usar el .dump Comando para volcar la base de datos a un archivo ASCII. Por ejemplo, podría volcarlo en un archivo .sql que contenga las instrucciones SQL para generar la base de datos.

Volcar toda la base de datos

Este ejemplo vuelca music.db archivo a music.sql .

sqlite3 music.db .dump > music.sql

Contenido de music.sql (se requiere desplazamiento):

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;

Copiar el archivo

Los métodos anteriores le permiten hacer una copia de seguridad de una base de datos desde el shell de línea de comandos de SQLite3.

También puede hacer una copia de seguridad de una base de datos simplemente copiando/pegando el archivo físico en el sistema de archivos.

Si no está seguro de la ubicación del archivo físico, puede usar .databases comando para encontrar la ubicación:

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

Armado con el conocimiento anterior, ahora puedo navegar a /Users/quackit/sqlite/ directorio, copie el music.db y péguelo en una ubicación segura.