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 ******
MySQL 3.23.12 以降のバージョンの --all-databases オプションが追加されました。
この方法は、データベースのバックアップ戦略を実装するために使用できます。
データ テーブルとデータベースを他のホストにコピーする
データを他の MySQL サーバーにコピーする必要がある場合は、mysqldump コマンドでデータベース名とデータ テーブルを指定できます。ソース ホストで次のコマンドを実行して、データを dump.txt ファイルにバックアップします。
$ mysqldump -u root -p --all-databases > database_dump.txt password ******
バックアップしたデータベースを MySQL サーバーにインポートする必要がある場合は、次のコマンドを使用できます。次のコマンドを使用してデータベースが作成されたことを確認する必要があります:
$ mysqldump -u root -p database_name table_name > dump.txt password *****
$ mysql -u root -p database_name < dump.txt password *****
上記のコマンドではパイプラインが使用されています。エクスポートされたデータを指定されたリモートホストにインポートします。
上記は [mysql チュートリアル] MySQL エクスポート データの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。