MySQL データのエクスポート
MySQL では、SELECT...INTO OUTFILE ステートメントを使用して、データをテキスト ファイルに簡単にエクスポートできます。
SELECT ... INTO OUTFILE ステートメントを使用してデータをエクスポートします
次の例では、データ テーブルtutorials_tbl データを /tmp/tutorials.txt ファイルにエクスポートします:
mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
データ出力の指定された形式を設定できますコマンド オプションを使用して、次の例では CSV 形式にエクスポートします。
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.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 SELECT の 'file_name' 形式では、選択した行をファイルに書き込むことができます。ファイルはサーバー ホスト上に作成されるため、この構文を使用するには FILE 権限が必要です。
出力を既存のファイルにすることはできません。ファイルデータの改ざんを防止します。
ファイルを取得するには、サーバーにログインしているアカウントが必要です。それ以外の場合、SELECT ... INTO OUTFILE は効果がありません。
UNIX では、ファイルは作成後に読み取り可能になり、権限は MySQL サーバーによって所有されます。これは、ファイルを読み取ることはできても、削除できない可能性があることを意味します。
テーブルを生データとしてエクスポート
mysqldump は、ストレージ データベースを転送するために mysql によって使用されるユーティリティです。主に、データベースを最初から再作成するために必要なコマンド CREATE TABLE INSERT などが含まれる SQL スクリプトを生成します。
mysqldump を使用してデータをエクスポートするには、--tab オプションを使用して、エクスポート ファイルで指定されたディレクトリを指定する必要があります。ターゲットは書き込み可能である必要があります。 次の例では、データ テーブルtutorials_tblを/tmpディレクトリにエクスポートします:
$ mysqldump -u root -p --no-create-info \ --tab=/tmp TUTORIALS tutorials_tbl password ******
SQL形式でデータをエクスポートします
以下に示すように、指定したファイルにデータをSQL形式でエクスポートします:
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt password ******
によって作成されたファイルの内容上記のコマンドは次のとおりです:
-- MySQL dump 8.23 -- -- Host: localhost Database: TUTORIALS --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `tutorials_tbl` -- CREATE TABLE tutorials_tbl ( tutorial_id int(11) NOT NULL auto_increment, tutorial_title varchar(100) NOT NULL default '', tutorial_author varchar(40) NOT NULL default '', submission_date date default NULL, PRIMARY KEY (tutorial_id), UNIQUE KEY AUTHOR_INDEX (tutorial_author) ) TYPE=MyISAM; -- -- Dumping data for table `tutorials_tbl` -- INSERT INTO tutorials_tbl VALUES (1,'Learn PHP','John Poul','2007-05-24'); INSERT INTO tutorials_tbl VALUES (2,'Learn MySQL','Abdul S','2007-05-24'); INSERT INTO tutorials_tbl VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
データベース全体のデータをエクスポートする必要がある場合は、次のコマンドを使用できます:
$ mysqldump -u root -p TUTORIALS > database_dump.txt password ******
すべてのデータベースをバックアップする必要がある場合は、次のコマンドを使用できます:
$ mysqldump -u root -p --all-databases > database_dump.txt password ******
--all-databases オプションは MySQL 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 *****
次のコマンドを使用してインポートすることもできます。エクスポートされたデータはリモート サーバーに直接送信されますが、2 つのサーバーが接続されており、相互にアクセスできることを確認してください:
$ mysqldump -u root -p database_name \ | mysql -h other-host.com database_name
【関連おすすめ】
1. 特別な推奨事項: 「php Programmer Toolbox」V0.1 バージョンのダウンロード
以上がMySQL からデータをエクスポートするサンプル チュートリアルの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。