Mysql-database-import

提供:Dev Guides
移動先:案内検索

MySQL-データベースのインポート-復旧方法

MySQLには、以前にバックアップしたファイルからMySQLデータベースにデータをロードする2つの簡単な方法があります。

LOAD DATAを使用したデータのインポート

MySQLは、バルクデータローダーとして機能するLOAD DATAステートメントを提供します。 以下は、現在のディレクトリから dump.txt ファイルを読み取り、現在のデータベースの mytbl テーブルにロードするステートメントの例です。

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  • LOCAL キーワードが存在しない場合、MySQLは、ファイルシステムのルートから始まるファイルの場所を完全に指定する* looking to absolute pathnameを使用して、サーバーホスト上でデータファイルを検索します。 MySQLは、指定された場所からファイルを読み取ります。
  • デフォルトでは、 LOAD DATA は、データファイルに改行(改行)で終了する行が含まれ、行内のデータ値がタブで区切られていると想定しています。
  • ファイル形式を明示的に指定するには、 FIELDS 句を使用して行内のフィールドの特性を記述し、 LINES 句を使用して行末シーケンスを指定します。 次の LOAD DATA ステートメントは、データファイルに、コロンで区切られた値と、改行と改行文字で終了する行が含まれることを指定します。
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
   -> FIELDS TERMINATED BY ':'
   -> LINES TERMINATED BY '\r\n';
  • LOAD DATAコマンドは、データファイルの列の順序が表の列の順序と同じであることを前提としています。 それが当てはまらない場合は、リストを指定して、データファイル列をロードするテーブル列を指定できます。 テーブルに列a、b、およびcがあるが、データファイル内の連続する列が列b、c、およびaに対応するとします。

次のコードブロックに示すように、ファイルをロードできます。

mysql> LOAD DATA LOCAL INFILE 'dump.txt'
   -> INTO TABLE mytbl (b, c, a);

mysqlimportを使用したデータのインポート

MySQLには、コマンドラインから入力ファイルを直接ロードできるように、LOAD DATAのラッパーとして機能する mysqlimport というユーティリティプログラムも含まれています。

*dump.txt* から *mytbl* にデータをロードするには、UNIXプロンプトで次のコマンドを使用します。
$ mysqlimport -u root -p --local database_name dump.txt
password *****
*mysqlimport* を使用する場合、コマンドラインオプションはフォーマット指定子を提供します。 前の2つの *LOAD DATA* ステートメントに対応する *mysqlimport* コマンドは、次のコードブロックに示すようになります。
$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
   --lines-terminated-by = "\r\n"  database_name dump.txt
password *****

オプションを指定する順序は、mysqlimportでは重要ではありません。ただし、オプションはすべてデータベース名の前に置く必要があります。

*mysqlimport* ステートメントは*-columns *オプションを使用して列の順序を指定します-
$ mysqlimport -u root -p --local --columns=b,c,a \
   database_name dump.txt
password *****

引用符と特殊文字の処理

FIELDS句では、 TERMINATED BY 以外の形式オプションを指定できます。 デフォルトでは、LOAD DATAは値が引用符で囲まれていないと想定し、バックスラッシュ(\)を特殊文字のエスケープ文字として解釈します。 値を引用する文字を明示的に示すには、 ENCLOSED BY コマンドを使用します。 MySQLは、入力処理中にデータ値の末尾からその文字を取り除きます。 デフォルトのエスケープ文字を変更するには、 ESCAPED BY を使用します。

ENCLOSED BYを指定して、引用文字をデータ値から削除することを示す場合、引用文字を二重にするか、エスケープ文字を前に付けることにより、引用文字をデータ値にそのまま含めることができます。

たとえば、引用符とエスケープ文字が "と\の場合、入力値*" a "" b \ "c" は *a "b" c として解釈されます。

*mysqlimport* の場合、引用符とエスケープ値を指定するための対応するコマンドラインオプションは、*-fields-enclosed-by *および*-fields-escaped-by *です。