コンテンツにスキップ

LOAD DATA INFILE

LOAD DATA INFILEは、CSV形式のデータファイルをサーバーが直接読み取り、テーブルへ入力する構文です。

大量データの取り込みにはmachloaderユーティリティを推奨します。 machloaderは並列処理と多様なオプションを提供し、より高速に取り込めます。

構文

LOAD DATA INFILE 'file_path' INTO TABLE table_name
    [TABLESPACE tablespace_name]
    [AUTO { BULKLOAD | HEADUSE | HEADUSE_ESCAPE }]
    [{ FIELDS | COLUMNS } [TERMINATED BY 'char'] [ENCLOSED BY 'char']]
    [LINES TERMINATED BY 'char']
    [TRIM { ON | OFF }]
    [IGNORE number LINES]
    [MAX_LINE_LENGTH number]
    [ENCODED BY coding_name]
    [ON ERROR { STOP | IGNORE }]

オプション

オプション説明
AUTO BULKLOAD行全体を1つの列に入力
AUTO HEADUSE最初の行の列名でテーブルを自動作成して入力
AUTO HEADUSE_ESCAPEHEADUSEと同じ。ただし予約語・特殊文字を_に置換
TERMINATED BY 'char'フィールド区切り文字(デフォルト: ,
ENCLOSED BY 'char'フィールド引用符(デフォルト: "
LINES TERMINATED BY 'char'レコード区切り文字
TRIM { ON | OFF }列の前後の空白を除去するか(デフォルト: ON)
IGNORE number LINES最初のN行を無視(ヘッダーのスキップなど)
MAX_LINE_LENGTH number1行の最大長(デフォルト: 512KB)
ENCODED BY coding_nameファイルのエンコーディング(デフォルト: UTF8)
ON ERROR STOP|IGNOREエラー時に停止または無視(デフォルト: STOP)

サポートするエンコーディング: UTF8MS949KSC5601EUCJPSHIFTJISBIG5GB231280

-- 基本のCSVファイル入力(区切り: ,  引用符: ")
LOAD DATA INFILE '/tmp/sensor_data.csv' INTO TABLE sensor_log;

-- ヘッダー1行を無視し、;区切りのファイルを入力
LOAD DATA INFILE '/tmp/data.csv' INTO TABLE sample_data
    FIELDS TERMINATED BY ';' ENCLOSED BY '\''
    IGNORE 1 LINES
    ON ERROR IGNORE;

-- AUTO BULKLOAD: 各行を単一列に入力(テーブルを自動作成)
LOAD DATA INFILE '/tmp/raw.txt' INTO TABLE raw_table AUTO BULKLOAD;

-- AUTO HEADUSE: 最初の行を列名としてテーブルを自動作成し、入力
LOAD DATA INFILE '/tmp/data_with_header.csv' INTO TABLE auto_table AUTO HEADUSE;

-- エンコーディングの指定
LOAD DATA INFILE '/tmp/korean_data.csv' INTO TABLE Korean_table ENCODED BY MS949;

注意事項

  • AUTOオプションを使用しない場合、対象テーブルのすべての列はVARCHARまたはTEXT型である必要があります。
  • ファイルパスは、Machbaseサーバープロセスがアクセスできるパスである必要があります。
  • 取り込み中にエラーが発生しても、入力済みの行はロールバックされません。
  • 大容量ファイルでは、machloaderの使用が性能面で有利です。

machloaderとの比較

項目LOAD DATA INFILEmachloader
並列処理未サポートサポート
使用方法SQL文CLIユーティリティ
用途少量データ、スクリプト内での使用大量の一括取り込み

関連文書

最終更新日