MySQL 最新のマニュアル ...login
MySQL 最新のマニュアル チュートリアル
著者:php.cn  更新時間:2022-04-15 14:04:12

MySQL エクスポート データ


MySQL エクスポート データ

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

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

次の例では、データ テーブル php_tbl データを /tmp/tutorials.txt ファイルにエクスポートします:

mysql> SELECT * FROM php_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 'file_name' 形式の SELECT は、選択した行をファイルに書き込むことができます。ファイルはサーバー ホスト上に作成されるため、この構文を使用するには FILE 権限が必要です。

  • 出力を既存のファイルにすることはできません。ファイルデータの改ざんを防止します。

  • ファイルを取得するには、サーバーにログインしているアカウントが必要です。それ以外の場合、SELECT ... INTO OUTFILE は効果がありません。

  • UNIX では、ファイルは作成後に読み取り可能になり、権限は MySQL サーバーによって所有されます。つまり、ファイルを読み取ることはできても、削除することはできない可能性があります。

テーブルを生データとしてエクスポート

mysqldump は、ストレージ データベースを転送するために mysql によって使用されるユーティリティです。主に、データベースを最初から再作成するために必要なコマンド CREATE TABLE INSERT などを含む SQL スクリプトを生成します。

mysqldump を使用してデータをエクスポートするには、--tab オプションを使用して、エクスポート ファイルで指定されたディレクトリを指定する必要があります。

次の例では、データ テーブル php_tbl を /tmp ディレクトリにエクスポートします。

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

SQL 形式でデータをエクスポートします。

以下に示すように、指定したファイルにデータを SQL 形式でエクスポートします:

$ mysqldump -u root -p php php_tbl > dump.txt
password ******
上記のコマンド ファイルの内容は次のとおりです:
-- MySQL dump 8.23
--
-- Host: localhost    Database: php
---------------------------------------------------------
-- Server version       3.23.58
--
-- Table structure for table `php_tbl`
--
CREATE TABLE php_tbl (
  php_id int(11) NOT NULL auto_increment,
  php_title varchar(100) NOT NULL default '',
  php_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  PRIMARY KEY  (php_id),
  UNIQUE KEY AUTHOR_INDEX (php_author)
) TYPE=MyISAM;
--
-- Dumping data for table `php_tbl`
--
INSERT INTO php_tbl 
       VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO php_tbl 
       VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO php_tbl 
       VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
データベース全体のデータをエクスポートする必要がある場合は、次のコマンドを使用できます:
$ mysqldump -u root -p php > 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 つのサーバーが接続されており、相互にアクセスできることを確認してください: </p>
$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

上記のコマンドはパイプラインを使用して、指定されたリモート ホストにデータをエクスポートします。

推奨ビデオ チュートリアル:

PHP中国語ウェブサイト