MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysqldump による区切りテキストフォーマットでのデータのダンプ

7.4.3 mysqldump による区切りテキストフォーマットでのデータのダンプ

このセクションでは、mysqldump を使用して、区切りテキストのダンプファイルを作成する方法について説明します。 そのようなダンプファイルのリロードについては、セクション7.4.4「区切りテキストフォーマットバックアップのリロード」を参照してください。

--tab=dir_name オプションを付けて、mysqldump を呼び出した場合、それは dir_name を出力ディレクトリとして使用し、テーブルごとに 2 つのファイルを使用して、そのディレクトリに個別にテーブルをダンプします。 テーブル名は、これらのファイルのベース名です。 t1 という名前のテーブルの場合、ファイルには t1.sql および t1.txt という名前が付けられます。 .sql ファイルにはテーブルの CREATE TABLE ステートメントが含まれます。 .txt ファイルにはテーブル行ごとに 1 行のテーブルデータが含まれます。

次のコマンドは db1 データベースの内容を /tmp データベース内のファイルにダンプします。

shell> mysqldump --tab=/tmp db1

テーブルデータを格納する .txt ファイルはサーバーによって書き込まれるため、それらはサーバーの実行に使用されるシステムアカウントによって所有されます。 サーバーは SELECT ... INTO OUTFILE を使用して、ファイルを書き込むため、この操作を実行するために FILE 権限が必要であり、指定した .txt ファイルがすでに存在する場合はエラーが発生します。

サーバーはダンプされるテーブルの CREATE 定義を mysqldump に送信し、それはそれらを .sql ファイルに書き込みます。 そのためこれらのファイルは、mysqldump を実行するユーザーによって所有されます。

--tab はローカルサーバーのダンプにのみ使用することをお勧めします。 リモートサーバーで使用する場合、--tab ディレクトリはローカルホストとリモートホストの両方に存在する必要があり、.txt ファイルはサーバーによってリモートディレクトリ (サーバーホスト上) に書き込まれますが、.sql ファイルは mysqldump によってローカルディレクトリ (クライアントホスト上) に書き込まれます。

mysqldump --tab の場合、サーバーはデフォルトでテーブルデータを、カラム値間にタブを、カラム値を引用符で囲まず、行ターミネータとして改行を使用して、1 行あたり 1 行で .txt ファイルに書き込みます。 (これらは、SELECT ... INTO OUTFILE の場合と同じデフォルトです。)

別のフォーマットを使用して、データファイルを書き込めるようにするため、mysqldump はこれらのオプションをサポートしています。

  • --fields-terminated-by=str

    カラム値を区切るための文字列 (デフォルト: タブ)。

  • --fields-enclosed-by=char

    カラム値を囲む文字 (デフォルト: 文字なし)。

  • --fields-optionally-enclosed-by=char

    数値以外のカラム値を囲む文字 (デフォルト: 文字なし)。

  • --fields-escaped-by=char

    特殊文字をエスケープするための文字 (デフォルト: エスケープなし)。

  • --lines-terminated-by=str

    行終了文字列 (デフォルト: 改行)。

これらのオプションに指定する値に応じて、コマンド行で、コマンドインタプリタに合わせて値を引用符で囲むかエスケープする必要がある場合があります。 または、16 進表記を使用して、値を指定します。 mysqldump にカラム値を二重引用符で囲ませたいとします。 そうするには、--fields-enclosed-by オプションの値として、二重引用符を指定します。 ただし、この文字は多くの場合コマンドインタプリタに特有であるため、特別に扱う必要があります。 たとえば、Unix ではこのように二重引用符を表すことができます。

--fields-enclosed-by='"'

どのプラットフォームでも 16 進で値を指定できます。

--fields-enclosed-by=0x22

複数のデータフォーマットオプションを一緒に使用することもよくあります。 たとえば、行を改行文字/復帰改行ペア (\r\n) で終了させたカンマ区切り値フォーマットでテーブルをダンプするには、このコマンドを使用します (1 行で入力します)。

shell> mysqldump --tab=/tmp --fields-terminated-by=,
         --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1

データ書式設定オプションのいずれかを使用してテーブルデータをダンプする場合は、後でデータファイルをリロードするときに同じ書式を指定して、ファイルの内容が正しく解釈されるようにする必要があります。


関連キーワード:  テーブル, mysqldump, ダンプ, サーバー, バックアップ, データ, fields, リカバリ, 文字, フォーマット