MySQL Shell 8.0  /  MySQL Shell ユーティリティ  /  テーブルエクスポートユーティリティ

このページは機械翻訳したものです。

8.3 テーブルエクスポートユーティリティ

MySQL Shell 8.0.22 で導入された MySQL Shell テーブルエクスポートユーティリティ util.exportTable() は、MySQL リレーショナルテーブルをローカルサーバーまたは Oracle Cloud Infrastructure Object Storage バケット上のデータファイルにエクスポートします。 その後、MySQL Shell パラレルテーブルインポートユーティリティ util.importTable() (セクション8.4「パラレルテーブルインポートユーティリティ」 を参照) を使用して、データをターゲット MySQL サーバー上のテーブルにアップロードできます。このユーティリティでは、パラレル接続を使用して、大規模なデータファイルの高速データインポートを提供します。 データファイルは、別のアプリケーションにデータをインポートしたり、単一のデータテーブルの軽量論理バックアップとして使用することもできます。

デフォルトでは、テーブルエクスポートユーティリティは、MySQL Shell パラレルテーブルインポートユーティリティのデフォルト形式でデータファイルを生成します。 DOS または UNIX システムの CSV ファイルおよび TSV ファイルのエクスポートには、事前設定オプションを使用できます。 テーブルエクスポートユーティリティで JSON データを生成できません。 SELECT...INTO OUTFILE ステートメントと同様にフィールド処理オプションおよび行処理オプションを設定して、任意の形式でデータファイルを作成することもできます。

テーブルエクスポートファイルの宛先を選択する場合、MySQL DB システムにインポートするには、パラレルテーブルインポートユーティリティを実行する MySQL Shell インスタンスが、MySQL DB システムにアクセスできる Oracle Cloud Infrastructure Compute インスタンスにインストールされている必要があります。 テーブルをオブジェクトストレージバケット内のファイルにエクスポートする場合、コンピュートインスタンスからオブジェクトストレージバケットにアクセスできます。 ローカルシステムにテーブルエクスポートファイルを作成する場合は、コンピュートインスタンスに選択したオペレーティングシステムに応じて、選択したコピーユーティリティを使用して Oracle Cloud Infrastructure Compute インスタンスに転送する必要があります。

テーブルエクスポートユーティリティを使用したエクスポートには、次の要件が適用されます:

  • ソース MySQL インスタンスおよびアップグレード先 MySQL インスタンスには、MySQL 5.7 以上が必要です。

  • Oracle Cloud Infrastructure Object Storage バケットへのファイルの転送に使用されるアップロード方法のファイルサイズ制限は、1.2 TiB です。

テーブルエクスポートユーティリティは、MySQL Shell グローバルセッションを使用して、エクスポートを実行するターゲット MySQL サーバーの接続詳細を取得します。 ユーティリティを実行する前に、( X プロトコル 接続または クラシック MySQL プロトコル 接続を持つことができる) グローバルセッションをオープンする必要があります。 ユーティリティはスレッドごとに独自のセッションを開き、接続圧縮や SSL オプションなどのオプションをグローバルセッションからコピーし、グローバルセッションをこれ以上使用しません。 データ転送の最大速度を制限して、ネットワーク上の負荷を分散できます。

MySQL Shell API では、テーブルエクスポートユーティリティはutilグローバルオブジェクトの関数であり、次のシグネチャを持ちます:

util.exportTable(table, outputUrl[, options])

table は、データファイルにエクスポートするリレーショナルデータテーブルの名前です。 テーブル名は有効なスキーマ名で修飾でき、必要に応じてバックティック文字で引用符で囲むことができます。 スキーマを省略すると、MySQL Shell グローバルセッションのアクティブなスキーマが使用されます。

データをローカルファイルシステムにエクスポートする場合、outputUrl は、エクスポートされたデータファイルへのパスとファイル名自体を指定する文字列で、適切な拡張子が付いています。 絶対パスまたは現在の作業ディレクトリからの相対パスを指定できます。 ローカルディレクトリパスの前に file://スキーマを付けることができます。 MySQL ShellJavaScript モードのこの例では、ユーザーはデフォルトの言語を使用して hr スキーマから employees テーブルをエクスポートします。 ファイルはユーザーホームディレクトリの exports ディレクトリに書き込まれ、次の形式のファイルに適した .txt 拡張子が付与されます:

shell-js> util.exportTable("hr.employees", "file:///home/hanna/exports/employees.txt")

エクスポートを実行する前にターゲットディレクトリが存在する必要がありますが、空である必要はありません。 エクスポートされたデータファイルがすでに存在する場合は、上書きされます。 ローカルディレクトリへのエクスポートの場合、データファイルはアクセス権限 rw-r----- で作成されます (これらがサポートされているオペレーティングシステム上)。 ファイルの所有者は、MySQL Shell を実行しているユーザーアカウントです。

Oracle Cloud Infrastructure Object Storage バケットにデータをエクスポートする場合、outputUrl はバケット内のデータファイルの名前で、適切なファイル拡張子が含まれます。 ディレクトリセパレータを含めて、ディレクトリ構造をシミュレートできます。 osBucketName オプションを使用してオブジェクトストレージバケットの名前を指定し、osNamespace オプションを使用してバケットのネームスペースを識別します。 MySQL ShellPython モードのこの例では、ユーザーは hr スキーマから TSV 形式のファイルとして employees テーブルをオブジェクトストレージバケット hanna-bucket にエクスポートします:

shell-py> util.export_table("hr.employees", "dump/employees.tsv", {
        > dialect: "tsv", "osBucketName": "hanna-bucket", "osNamespace": "idx28w1ckztq" })

オブジェクトストレージバケットのネームスペースは、Oracle Cloud Infrastructure コンソールのバケット詳細ページの「バケット情報」タブに表示されるか、Oracle Cloud Infrastructure コマンドラインインタフェースを使用して取得できます。 オブジェクトストレージバケットへの接続は、デフォルトの Oracle Cloud Infrastructure CLI 構成ファイルのデフォルトプロファイル、または ociConfigFile および ociProfile オプションを使用して指定する代替詳細を使用して確立されます。 CLI 構成ファイルの設定手順については、「SDK および CLI 構成ファイル」を参照してください。

options はオプションのディクショナリで、空の場合は省略できます。 テーブルエクスポートユーティリティでは、次のオプションを使用できます:

dialect: [default|csv|csv-unix|tsv]

エクスポートされたデータファイルの形式のフィールド処理オプションと行処理オプションのセットを指定します。 linesTerminatedBy, fieldsTerminatedBy, fieldsEnclosedBy, fieldsOptionallyEnclosed および fieldsEscapedBy オプションのいずれかまたは複数を指定して設定を変更することで、選択した言語をさらにカスタマイズするためのベースとして使用できます。

デフォルトの言語では、そのステートメントのデフォルト設定で SELECT...INTO OUTFILE ステートメントを使用して作成されるものと一致するデータファイルが生成されます。.txt は、これらの出力ファイルに割り当てる適切なファイル拡張子です。 DOS または UNIX システム (.csv) および TSV ファイル (.tsv) の CSV ファイルをエクスポートするには、他のダイアレクトを使用できます。

各言語に適用される設定は次のとおりです:

表 8.1 テーブルエクスポートユーティリティの言語設定

dialect

linesTerminatedBy

fieldsTerminatedBy

fieldsEnclosedBy

fieldsOptionallyEnclosed

fieldsEscapedBy

default

[LF]

[TAB]

[空]

false

\

csv

[CR][LF]

,

''

true

\

csv-unix

[LF]

,

''

false

\

tsv

[CR][LF]

[TAB]

''

true

\


注記
  1. ダイアレクトのキャリッジリターンおよびラインフィードの値は、オペレーティングシステムに依存しません。

  2. linesTerminatedBy, fieldsTerminatedBy, fieldsEnclosedBy, fieldsOptionallyEnclosed および fieldsEscapedBy オプションを使用する場合、コマンドインタプリタのエスケープ規則に応じて、バックスラッシュ文字 (\) をオプション値で使用する場合は二重にする必要があります。

  3. SELECT...INTO OUTFILE ステートメントを使用した MySQL サーバーと同様に、MySQL Shell では、指定したフィールド処理および行処理オプションは検証されません。 これらのオプションを正しく選択しないと、データが部分的または誤ってエクスポートされる可能性があります。 エクスポートを開始する前に必ず設定を確認し、後で結果を確認してください。

linesTerminatedBy: "characters"

ユーティリティがエクスポートされたデータファイルの各行を終了するために使用する 1 つ以上の文字 (または空の文字列)。 デフォルトは、指定された方言、または方言オプションが省略されている場合は改行文字 (\n) です。 このオプションは、SELECT...INTO OUTFILE ステートメントの LINES TERMINATED BY オプションと同等です。 ユーティリティでは、空の文字列に設定されている SELECT...INTO OUTFILE ステートメントの LINES STARTING BY オプションに相当するものは提供されないことに注意してください。

fieldsTerminatedBy: "characters"

ユーティリティがエクスポートされたデータファイルの各フィールドを終了するために使用する 1 つ以上の文字 (または空の文字列)。 デフォルトは、指定された言語、または言語オプションが省略されている場合はタブ文字 (\t) です。 このオプションは、SELECT...INTO OUTFILE ステートメントの FIELDS TERMINATED BY オプションと同等です。

fieldsEnclosedBy: "character"

ユーティリティがエクスポートされたデータファイル内の各フィールドを囲む単一の文字 (または空の文字列)。 デフォルトは、指定された言語に対するものであり、dialect オプションが省略されている場合は空の文字列です。 このオプションは、SELECT...INTO OUTFILE ステートメントの FIELDS ENCLOSED BY オプションと同等です。

fieldsOptionallyEnclosed: [ true | false ]

fieldsEnclosedBy に指定された文字が、エクスポートされたデータファイル (false) のすべてのフィールドを囲むか、または CHAR, BINARY, TEXTENUM (true) などの文字列データ型を持つフィールドのみを囲むか。 デフォルトは、指定された言語、または dialect オプションが省略されている場合は false です。 このオプションにより、fieldsEnclosedBy オプションは SELECT...INTO OUTFILE ステートメントの FIELDS OPTIONALLY ENCLOSED BY オプションと同等になります。

fieldsEscapedBy: "character"

エクスポートされたデータファイルでエスケープシーケンスを開始する文字。 デフォルトは、指定された言語の場合と同様です。または、dialect オプションが省略されている場合はバックスラッシュ (\)) です。 このオプションは、SELECT...INTO OUTFILE ステートメントの FIELDS ESCAPED BY オプションと同等です。 このオプションを空の文字列に設定した場合、文字はエスケープされません。SELECT...INTO OUTFILE で使用される特殊文字はエスケープする必要があるため、これはお薦めしません。

osBucketName: "string"

エクスポートされたデータファイルが書き込まれる Oracle Cloud Infrastructure Object Storage バケットの名前。 デフォルトでは、~/.oci/config にある Oracle Cloud Infrastructure CLI 構成ファイルの[DEFAULT]プロファイルを使用して、バケットへの接続が確立されます。 ociConfigFile および ociProfile オプションを使用して、接続に使用される代替プロファイルを置換できます。 CLI 構成ファイルの設定手順については、「SDK および CLI 構成ファイル」を参照してください。

osNamespace: "string"

osBucketName によって指定されたオブジェクトストレージバケットが配置される Oracle Cloud Infrastructure ネームスペース。 オブジェクトストレージバケットのネームスペースは、Oracle Cloud Infrastructure コンソールのバケット詳細ページの「バケット情報」タブに表示されるか、Oracle Cloud Infrastructure コマンドラインインタフェースを使用して取得できます。

ociConfigFile: "string"

デフォルトの場所の ~/.oci/config ではなく、接続に使用するプロファイルを含む Oracle Cloud Infrastructure CLI 構成ファイル。

ociProfile: "string"

接続に使用される Oracle Cloud Infrastructure CLI 構成ファイル内の[DEFAULT]プロファイルではなく、接続に使用する Oracle Cloud Infrastructure プロファイルのプロファイル名。

maxRate: "string"

エクスポート時のデータ読取りスループットのスレッド当たりの最大バイト数 (毎秒)。 単位接尾辞 k (キロバイト)、M (メガバイト)、および G (ギガバイト) を使用できます (たとえば、100M を設定すると、スループットがスレッド当たり 100 メガバイト/秒に制限されます)。 0 (デフォルト値) を設定するか、オプションを空の文字列に設定すると、制限は設定されません。

showProgress: [ true | false ]

エクスポートの進行状況情報を表示 (true) または非表示 (false) します。 MySQL Shell が対話型モードの場合など、stdout が端末 (tty) の場合、デフォルトは true です。それ以外の場合は false です。 進捗情報には、エクスポートされる行の推定合計数、これまでにエクスポートされた行数、完了率およびスループット (行およびバイト/秒) が含まれます。

compression: "string"

エクスポートされたデータファイルの書込み時に使用する圧縮タイプ。 デフォルトでは、圧縮なし (none) が使用されます。 または、gzip 圧縮 (gzip) または zstd 圧縮 (zstd) を使用します。

defaultCharacterSet: "string"

エクスポートのために MySQL Shell によってサーバーに開かれるセッション接続中に使用される文字セット。 デフォルトは utf8mb4 です。 システム変数 character_set_clientcharacter_set_connection および character_set_results のセッション値は、接続ごとにこの値に設定されます。 文字セットは、character_set_client システム変数で許可され、MySQL インスタンスでサポートされている必要があります。