sql >> データベース >  >> RDS >> SQLite

SQLite-データベースをファイルにバックアップ

    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 をコピーします ファイルを作成し、安全な場所に貼り付けます。


    1. RMANおよびORA-00245を使用したスナップショット制御ファイル機能

    2. herokuでプレーンテキストのpostgresデータベースダンプを取得するにはどうすればよいですか?

    3. SQL Server ManagementStudio2012の主キーの自動インクリメント

    4. 致命的なエラー:未定義の関数mysql_connect()の呼び出し