SQLiteデータベースをファイルにバックアップする方法。
SQLiteデータベースをファイルにバックアップする方法はいくつかあります。
-
.backupを使用します コマンド。 -
.cloneを使用します コマンド。 -
.dumpを使用します コマンド。 - ファイルをファイルシステムにコピーします。
.backup コマンド
このコマンドは、データベースをファイルにバックアップします。データベースエイリアス(つまり、バックアップするデータベース)とファイル名(バックアップファイル用)を受け入れます。
データベースエイリアスを省略すると、mainが使用されます データベース。
次に例を示します:
.backup mybackup.db
これにより、
backup.db
というファイルが作成されます データベースのバックアップが含まれています。必要に応じて、これをSQLite3コマンドラインシェルにアタッチし直すことができます(次に、.databasesを実行します。 データベース接続のリストを表示するには):
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
実際には、データベースを別の場所にバックアップすることになるでしょう。したがって、.backupで完全なファイルパスを指定します 指図。例:.backup /remote/folder/mybackup.db
.clone コマンド
.clone コマンドは.backupに似ています 指図。ただし、.clone 現在のデータベースのみを使用するため、複製する別のデータベースを指定することはできません。
現在のデータベースのクローンを作成するには、.cloneと入力します クローンデータのデータベースファイルの名前が続きます。
このように:
.clone myclone.db
次のように実行します:
sqlite> .clone myclone.db Artists... done Albums... done Albums2... done Catalog... done Genres... done
クローンデータベースは、他のデータベースと同じようにアタッチできます。
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 コマンド
.dumpを使用できます データベースをASCIIファイルにダンプするコマンド。たとえば、データベースを生成するためのSQLステートメントを含む.sqlファイルにダンプできます。
DB全体をダンプする
この例では、 music.db をダンプします music.sql へのファイル 。
sqlite3 music.db .dump > music.sql
music.sql の内容 (スクロールが必要です):
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;
ファイルをコピー
上記の方法では、SQLite3コマンドラインシェル内からデータベースをバックアップできます。
ファイルシステムに物理ファイルをコピーして貼り付けるだけで、データベースをバックアップすることもできます。
物理ファイルの場所がわからない場合は、.databasesを使用できます。 場所を見つけるコマンド:
sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/quackit/sqlite/music.db 1 temp
上記の知識を身に付けたので、 / Users / quackit / sqlite / に移動できます。 ディレクトリに、 music.db をコピーします ファイルを作成し、安全な場所に貼り付けます。