すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:LOAD DATAを使用してデータをdata Warehouse Editionにインポートする

最終更新日:Jun 11, 2024

このトピックでは、LOAD DATAステートメントを使用してオンプレミスデータをAnalyticDB for MySQL data Warehouse Edition (V3.0) にインポートする方法について説明します。

構文

ロードデータローカル 
    INFILE 'file_name' 
    [交換 | IGNORE] 
    INTO TABLE table_name 
    [{フィールド | コラム}
        [「文字列」で終了] 
        [[最適] 'char' で囲まれた] 
    ]
    [ライン]
        [「文字列」で終了] 
    ]
    [IGNORE number {LINES | ROWS}] 
    [(column_name_or_user_var
    [, column_name_or_user_var] ...) 

パラメーター

パラメーター

説明

LOAD DATA LOCAL INFILE

オンプレミスファイルからデータをインポートします。 すべてのテキストファイルがサポートされています。

説明
  • V3.1.10.2以降およびV3.2.0以降のAnalyticDB for MySQLクラスターを使用すると、CSVファイルからデータをインポートできます。 デフォルトでは、CSVファイルはRFC 4180標準に準拠しています。 CSVファイルには、行区切り文字や列区切り文字ではなく、列区切り文字を指定できます。

  • CSVファイルのRFC 4180標準を無効にするには、SET adb_config LOAD_CSV_DATA_WITH_OPENCSV_FORMAT=falseステートメントを実行します。

file_name

オンプレミスファイルのパス。 パスはディレクトリとファイル名で構成されます。

説明

file_nameパラメーターで指定されたパスが相対パスの場合、オンプレミスファイルのパスはクライアントのパスに対して相対的です。

table_name

AnalyticDB for MySQLテーブルの名前。

交換

重複主キーが使用されている場合にインポートするデータで既存のデータを上書きします。

無視

重複主キーを使用するか、データエラーが発生した場合にインポートに失敗した行を無視します。 特定の行のインポートに失敗する場合があります。

[フィールド] 「文字列」で終了

データの列を区切るために使用される区切り文字。 デフォルト値は \tで、MySQLデータベースの列区切り文字と同じです。

[フィールド] 'char' で囲まれた

各列のデータを囲むために使用される文字。

たとえば、列のデータが "a" で、ENCLOSED BY "句を指定した場合、データがインポートされる前に二重引用符 (" ") が" a "から削除されます。

[ライン] 「文字列」で終了

データの行を区切るために使用される区切り文字。 デフォルト値は \nです。

IGNORE番号ライン

データをインポートするときに無視する行数。

たとえば、IGNORE 1 LINESは、データの最初の行が無視され、AnalyticDB for MySQLテーブルにインポートされないことを指定します。

(column_name_or_user_var、...)

インポートする列。 このパラメーターを指定しない場合、データは列の順序に基づいてインポートされます。

  • インポートする列の数がAnalyticDB for MySQLテーブルの列の数より大きい場合、システムは余分な列を無視します。

  • インポートする列の数がAnalyticDB for MySQLテーブルの列の数より少ない場合、インポートされたデータで満たされていない列はデフォルト値で満たされます。

使用上の注意

  • クライアントのlocal-infile機能を有効にする必要があります。

    たとえば、次の設定をmy.cn fファイルに追加して、MySQLクライアントのlocal-infile機能を有効にする必要があります。

    cat ~/.my.cn f
    [mysqld]
    local-infile
    [mysql]
    local-infile 

    my.cn fファイルの詳細については、「MySQL公式ドキュメント」をご参照ください。

  • データのインポートは、操作の原子性を保証できません。

    • IGNOREモードでは、インポートに失敗したデータの行は無視されます。

    • REPLACEモードでは、データの行のインポートに失敗した場合、後続のINSERT操作は終了します。 その結果、特定の行のデータがインポートされない場合があります。

  • SHOW WARNINGSステートメントを実行して、失敗した行のエラーメッセージを照会できます。

例:

この例では、out.bakという名前のオンプレミスファイルのデータが、testという名前のAnalyticDB for MySQLテーブルにインポートされます。 out.bakファイルには、5,000行のデータが含まれます。 列の区切り文字は \t、行の区切り文字は \nです。 次のデータエントリに示すように、8行目のデータが無効です。

1 bb
2 bb
3 bb
4 bb
5 bb
6 bb
7 bb
bb 8
9 bb
... 
  1. 管理するAnalyticDB for MySQLクラスターに接続しますCREATE DATABASEおよびCREATE TABLEステートメントを実行して、adb_demoという名前のデータベースにtestという名前のテーブルを作成し、オンプレミスファイルからインポートするデータを格納します。

    CREATE TABLEテスト (
    int NOT NULL DEFAULT '0' 、b varchar NOT NULL,
    主要なキー (a)
    ) HASHによる分布 (a); 
  2. MySQLクライアントでLOAD DATAステートメントを実行して、out.bakという名前のオンプレミスファイルからtestという名前のAnalyticDB for MySQLテーブルにデータをインポートします。

    • LOAD DATAステートメントをIGNOREモードで実行します。 このモードでは、特定の行のインポートに失敗する可能性があります。 例:

      LOAD DATA LOCAL INFILE '~/out.bak' IGNORE INTO TABLEテストフィールドは' \'によって終了しました。'\n ' ;

      次のステートメントを実行して、インポート結果を照会します。

      選択カウント (1) テストから;
      --------- +
      | count(1) |
      + ---------
      | 4999 |
      + ---------
      1行セット (0.14秒) 
    • LOAD DATAステートメントをREPLACEモードで実行します。 このモードでは、行のインポートに失敗した場合、後続のインポート操作は直ちに終了します。 例:

      LOAD DATA LOCAL INFILE '~/out.bak' は、' \'によって終了するテーブルテストフィールドに置き換えられます。'\n' ;

      サンプル結果:

      エラー1064 (42000): [13000、2019061210070703000511314203303000266] 構文エラー: syntax ERROR=> IDENTIFIER is not value type pos:34 row: 0 and ceil:0
    • データをインポートするときに、データの最初の10行をスキップするには、LOAD DATAステートメントを実行します。 例:

      LOAD DATA LOCAL INFILE '~/out.bak' REPLACE INTO TABLE test FIELDS TERMINATED BY'\t' LINES TERMINATED BY '\n' IGNORE 10 LINES;

      サンプル結果:

      クエリOK、影響を受ける4990行 (0.37秒)