English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQLデータエクスポート

MySQLでは、以下を使用できますSELECT...INTO OUTFILE文を使用してデータをテキストファイルに簡単にエクスポートします。

SELECT ... INTO OUTFILE文を使用してデータをエクスポートします

以下の例では、データテーブル w3codebox_tbl データをエクスポートします /tmp/w3codebox.txt ファイル中:

mysql> SELECT * FROM w3codebox_tbl 
    -> INTO OUTFILE '/tmp/w3codebox.txt';

データの出力形式を設定するコマンドオプションを使用して、以下の例ではCSV形式をエクスポートします:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/w3codebox.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

以下の例では、各値がカンマで区切られたファイルが生成されます。この形式は多くのプログラムで使用できます。

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

SELECT ... INTO OUTFILE文には以下の属性があります:

  • LOAD DATA INFILEはSELECT ... INTO OUTFILEの逆操作、SELECT文法です。データベースのデータをファイルに書き込むためにはSELECT ... INTO OUTFILEを使用し、ファイルを読み戻すためにはLOAD DATA INFILEを使用します。

  • SELECT...INTO OUTFILE 'file_name'の形式のSELECTは、選択された行をファイルに書き込むことができます。このファイルはサーバーホスト上に作成されますので、この構文を使用するにはFILE権限が必要です。

  • 出力は既存のファイルではありません。ファイルデータが改ざんされるのを防ぎます。

  • サーバーにログインするアカウントが必要です。さもなければ、SELECT ... INTO OUTFILEは何の効果もありません。

  • UNIXで、このファイルが作成された後は読み取り可能であり、権限はMySQLサーバーが持っています。これは、あなたがファイルを読み取ることができるが、削除できない可能性があることを意味します。

テーブルを原始データとしてエクスポートする

mysqldumpは、mysqlがデータベースをバックアップするためのユーティリティです。主に、データベースを再構築するために必要なコマンド(CREATE TABLE、INSERTなど)を含むSQLスクリプトを生成します。

mysqldumpを使用してデータをエクスポートするには、  --tab オプションを使用して、エクスポートファイルの指定されたディレクトリを指定します。このディレクトリは書き込み可能でなければなりません。

以下の例では、データテーブル w3codebox_tbl エクスポート /tmp ディレクトリ中:

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3codebox w3codebox_tbl
password ******

SQL フォーマットのデータをエクスポートする

指定されたファイルに SQL フォーマットのデータをエクスポートする方法:

$ mysqldump -u root -p w3codebox w3codebox_tbl > dump.txt
password ******

以下のコマンドで作成されたファイルの内容は以下の通りです:

-- MySQL ダンプ 8.23
--
-- ホスト: localhost Database: w3codebox
---------------------------------------------------------
-- サーバーバージョン       3.23.58
--
-- テーブル `w` の構造3codebox_tbl`
--
CREATE TABLE w3codebox_tbl (
  w3codebox_id int(11) NOT NULL auto_increment,
  w3codebox_title varchar(100) NOT NULL default '',
  w3codebox_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  PRIMARY KEY (w3codebox_id),
  UNIQUE KEY AUTHOR_INDEX (w3codebox_author)
) TYPE=MyISAM;
--
-- テーブル `w` のデータをダンプしています3codebox_tbl`
--
INSERT INTO w3codebox_tbl 
       VALUES (1Learn PHP2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (2Learn MySQL2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (3JAVA チュートリアル2007-05-06');

データベース全体のデータをエクスポートする必要がある場合、以下のコマンドを使用できます:

$ mysqldump -u root -p w3codebox > database_dump.txt
password ******

すべてのデータベースをバックアップする必要がある場合、以下のコマンドを使用できます:

$ mysqldump -u root -p --すべて-データベース > database_dump.txt
password ******

--すべて-MySQLのdatabasesオプション 3.23.12 および以降のバージョンで追加。

この方法はデータベースのバックアップ戦略を実現するために使用できます。

テーブルおよびデータベースを他のホストにコピーする

データを他のMySQLサーバーにコピーする必要がある場合、mysqldumpコマンドでデータベース名およびテーブル名を指定できます。

以下のコマンドを実行して、データをdump.txtファイルにバックアップします:

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

完全なデータベースのバックアップを取得する場合、特定のテーブル名を使用する必要はありません。

データベースをMySQLサーバーにインポートするために、以下のコマンドを使用しますが、データベースが既に作成されていることを確認してください:

$ mysql -u root -p database_name < dump.txt
password *****

エクスポートされたデータを直接リモートサーバーにインポートするための以下のコマンドを使用することもできますが、両サーバーが通信可能で相互にアクセスできることを確認してください:

$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

以下のコマンドでは、エクスポートされたデータを指定されたリモートホストにインポートするためにパイプを使用しています。