メインコンテンツまでスキップ
バージョン: 4.x

MYSQL LOAD

説明

MySQLクライアントを使用してローカルデータファイルをDorisにインポートします。MySQL Loadは同期インポート方式で、実行後すぐにインポート結果を返します。LOAD DATA文の戻り値に基づいてインポートが成功したかどうかを判断できます。MySQL Loadは一連のインポートタスクの原子性を保証し、すべてのインポートが成功するかすべて失敗するかのいずれかになります。

構文

LOAD DATA
[ LOCAL ]
INFILE "<file_name>"
INTO TABLE "<tbl_name>"
[ PARTITION (<partition_name> [, ... ]) ]
[ COLUMNS TERMINATED BY "<column_separator>" ]
[ LINES TERMINATED BY "<line_delimiter>" ]
[ IGNORE <number> {LINES | ROWS} ]
[ (<col_name_or_user_var> [, ... ] ) ]
[ SET (col_name={<expr> | DEFAULT} [, col_name={<expr> | DEFAULT}] ...) ]
[ PROPERTIES ("<key>" = "<value>" [ , ... ]) ]

必須パラメータ

1. <file_name>

ローカルファイルのパスを指定します。相対パスまたは絶対パスのいずれかを指定できます。現在、単一ファイルのみサポートされており、複数ファイルはサポートされていません。

2. <tbl_name>

テーブル名にはデータベース名を含めることができます(例を参照)。データベース名を省略した場合、現在のユーザーのデータベースが使用されます。

オプションパラメータ

1. LOCAL

LOCALを指定すると、クライアントからファイルを読み込むことを示します。省略すると、FEサーバーのローカルストレージからファイルを読み込みます。FEサーバーからファイルをインポートする機能はデフォルトで無効になっています。この機能を有効にするには、FEノードでmysql_load_server_secure_pathを設定してセキュアパスを指定する必要があります。

2. <partition_name>

インポート用に複数のパーティションを指定でき、カンマで区切ります。

3. <column_separator>

列区切り文字を指定します。

4. <line_delimiter>

行区切り文字を指定します。

5. IGNORE <number> { LINES | ROWS }

ユーザーはCSVファイルのヘッダーまたは任意の行数をスキップできます。この構文はIGNORE num ROWSに置き換えることもできます。

6. <col_name_or_user_var>

列マッピング構文です。具体的なパラメータについては、インポート時のデータ変換の列マッピングセクションを参照してください。

7. properties ("<key>"="<value>",...)

パラメータパラメータ説明
max_filter_ratioフィルタリング可能なデータの最大許容比率(データの不規則性などの理由による)で、デフォルトはゼロ許容です。
timeoutインポートタイムアウト期間を秒単位で指定します。デフォルトは600秒で、有効範囲は1秒から259,200秒です。
strict_modeユーザーはこのインポートでストリクトモードを有効にするかどうかを指定できます。デフォルトは無効です。
timezoneこのインポートのタイムゾーンを指定します。デフォルトは東8時間タイムゾーンです。このパラメータは、インポートに関連するすべてのタイムゾーン関連関数の結果に影響します。
exec_mem_limitインポートメモリ制限で、デフォルトはバイト単位で2GBです。
trim_double_quotesboolean型でデフォルト値はfalseです。trueに設定すると、インポートファイルの各フィールドの最外側の二重引用符をトリミングすることを意味します。
enclose囲み文字です。CSVデータフィールドに行区切り文字または列区切り文字が含まれている場合、誤った切り詰めを防ぐため、単一バイト文字を囲み文字として指定して保護できます。例えば、列区切り文字が","、囲み文字が"'"、データが"a,'b,c'"の場合、"b,c"は1つのフィールドとして解析されます。注:enclose""に設定されている場合、trim_double_quotestrueに設定する必要があります。
escapeエスケープ文字です。CSVフィールド内の囲み文字と同じ文字をエスケープするために使用されます。例えば、データが"a,'b,'c'"、囲み文字が"'"で、"b,'c"を1つのフィールドとして解析したい場合、""などの単一バイトエスケープ文字を指定し、データを"a,'b,'c'"に変更する必要があります。

アクセス制御要件

このSQLコマンドを実行するユーザーは、少なくとも以下の権限を持つ必要があります:

権限オブジェクト注記
LOAD_PRIVTable指定されたデータベーステーブルのインポート権限。

使用上の注意

  • MySQL Load文はLOAD DATA構文で始まり、LABELの指定は必要ありません。

  1. クライアントのローカルファイルtestDataから、データベースtestDbのテーブルtestTblにデータをインポートします。タイムアウトを100秒に指定します。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PROPERTIES ("timeout"="100")
  2. サーバーのローカルファイル /root/testData からデータをインポートします(FE設定 mysql_load_server_secure_path/root に設定する必要があります)。データベース testDb のテーブル testTbl にインポートし、タイムアウトを100秒に指定します。

    LOAD DATA
    INFILE '/root/testData'
    INTO TABLE testDb.testTbl
    PROPERTIES ("timeout"="100")
  3. クライアントのローカルファイルtestDataから、データベースtestDb内のテーブルtestTblにデータをインポートし、エラー率20%を許可します。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PROPERTIES ("max_filter_ratio"="0.2")
  4. クライアントのローカルファイルtestDataから、データベースtestDb内のテーブルtestTblにデータをインポートします。エラー率20%を許可し、ファイルの列名を指定します。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    (k2, k1, v1)
    PROPERTIES ("max_filter_ratio"="0.2")
  5. ローカルファイルtestDataからデータベースtestDb内のテーブルtestTblのパーティションp1p2にデータをインポートし、エラー率20%を許可する。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PARTITION (p1, p2)
    PROPERTIES ("max_filter_ratio"="0.2")
  6. ローカルCSVファイルtestDataから、行区切り文字0102、列区切り文字0304を使用して、データベースtestDb内のテーブルtestTblにデータをインポートする。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    COLUMNS TERMINATED BY '0304'
    LINES TERMINATED BY '0102'
  7. ローカルファイルtestDataからデータベースtestDbのテーブルtestTblのパーティションp1p2にデータをインポートし、最初の3行をスキップします。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PARTITION (p1, p2)
    IGNORE 3 LINES
  8. 厳密モードフィルタリングでデータをインポートし、タイムゾーンをAfrica/Abidjanに設定します。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PROPERTIES ("strict_mode"="true", "timezone"="Africa/Abidjan")
  9. インポートメモリを10GBに制限し、データインポートのタイムアウトを10分に設定します。

    LOAD DATA LOCAL
    INFILE 'testData'
    INTO TABLE testDb.testTbl
    PROPERTIES ("exec_mem_limit"="10737418240", "timeout"="600")