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

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

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

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

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  • の場合 LOCAL キーワードが存在しない場合、MySQLはを使用してサーバーホスト上のデータファイルを検索します looking into 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には、という名前のユーティリティプログラムも含まれています mysqlimport これはLOADDATAのラッパーとして機能するため、コマンドラインから直接入力ファイルをロードできます。

からデータをロードするには dump.txtmytbl、UNIXプロンプトで次のコマンドを使用します。

$ mysqlimport -u root -p --local database_name dump.txt
password *****

使用する場合 mysqlimport、コマンドラインオプションはフォーマット指定子を提供します。ザ・mysqlimport 前の2つに対応するコマンド LOAD DATA ステートメントは、次のコードブロックに示すようになります。

$ 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を指定して、引用符をデータ値から削除する必要があることを示す場合、引用符を2倍にするか、エスケープ文字を前に付けることで、データ値内に文字通り引用符を含めることができます。

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

にとって mysqlimport、引用符とエスケープ値を指定するための対応するコマンドラインオプションは次のとおりです。 --fields-enclosed-by そして --fields-escaped-by