このセクションでは、mysqldump を使用して、区切りテキストのダンプファイルを作成する方法について説明します。 そのようなダンプファイルのリロードについては、セクション7.4.4「区切りテキストフォーマットバックアップのリロード」を参照してください。
--tab=
オプションを付けて、mysqldump を呼び出した場合、それは dir_name
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
データ書式設定オプションのいずれかを使用してテーブルデータをダンプする場合は、後でデータファイルをリロードするときに同じ書式を指定して、ファイルの内容が正しく解釈されるようにする必要があります。