【MySQL】LOAD DATA INFILE構文の使い方を解説

MySQLの LOAD DATA INFILE 構文は、大量のデータをデータベースにインポートする際に非常に便利な機能です。この構文を使用することで、CSVファイルなどの外部ファイルからデータを効率的に取り込み、手動入力の手間を省くことができます。特に、大規模なデータ移行や定期的なデータ更新が必要な場面では、その性能と簡便さ大きな利点となります。

本記事では、LOAD DATA INFILE の基本的な使い方や実際の適用例について解説します。

LOAD DATA INFILE構文の基本的な書き方

LOAD DATA INFILE 構文は、外部ファイルからMySQLのテーブルへデータを簡単にインポートするための構文です。その基本的な構文は次の通りです。

LOAD DATA [LOCAL] INFILE 'ファイルパス'
INTO TABLE テーブル名
[FIELDS TERMINATED BY '区切り文字' ENCLOSED BY '囲み文字']
[LINES TERMINATED BY '行区切り文字']
[IGNORE n LINES];

この構文の各要素について詳しく見ていきましょう。

[LOCAL]
LOCAL を指定すると、クライアント側に存在するファイルからデータをインポートします。これがない場合、サーバー上のファイルを使用します。

INFILE 'ファイルパス'
インポートするファイルのパスを指定します。ファイルはCSV形式であることが一般的です。

INTO TABLE テーブル名
データをインポートするターゲットテーブルの名前を指定します。インポートするファイルの構造がテーブルのカラム構造と一致している必要があります。

FIELDS TERMINATED BY '区切り文字'
各フィールド(列)を区切る文字を指定します。CSVファイルの場合、通常はコンマ(,)を指定します。

ENCLOSED BY '囲み文字'
フィールドが囲まれている文字(例えばダブルクォーテーション")を指定します。これにより、フィールド内に区切り文字が含まれている場合でも正確にインポートされます。

LINES TERMINATED BY '行区切り文字'
行の区切り文字を指定します。通常、テキストファイルの行区切り文字である改行(\n)が指定されます。

IGNORE n LINES
ファイルの最初のn行を無視する設定です。ヘッダー行がある場合に使用します。

これらのオプションを活用することで、ファイル構造に合わせて柔軟にデータをインポートすることができます。

具体的な使用例

LOAD DATA INFILEを使って、実際にデータをインポートする例を見てみましょう。ここでは、ローカルファイルとサーバー上のファイルからデータをインポートするケースをそれぞれ解説します。

ローカルファイルからのデータインポート例

ローカルに保存されたCSVファイルをusersテーブルにインポートする方法です。この例では、ファイルのパスは/path/to/file.csv、フィールドの区切り文字はカンマ、各フィールドはダブルクォーテーションで囲まれていると仮定します。

LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

上記の例では、IGNORE 1 LINESを使用して、CSVファイルのヘッダー行を無視しています。また、FIELDS TERMINATED BYおよびENCLOSED BYオプションを設定することで、データの正確な区切りを指定しています。

サーバー上のファイルからのデータインポート例

次に、MySQLサーバー上に保存されているファイル/var/lib/mysql-files/data.csvから、productsテーブルにデータをインポートする方法です。サーバー上のファイルを扱う場合、LOCALキーワードを省略します。

LOAD DATA INFILE '/var/lib/mysql-files/data.csv'
INTO TABLE products
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

この例では、Windowsの改行コード(\r\n)を使用しているため、LINES TERMINATED BY '\r\n'を指定しています。また、サーバー上のファイルにアクセスするためには、MySQLユーザーに必要なファイルアクセス権限があることを確認する必要があります。

まとめ

LOAD DATA INFILE構文は、大量のデータを効率的にMySQLにインポートするための強力な手段です。特に、CSVファイルやログファイルなどを直接テーブルに取り込む際に、その速度と柔軟性が大きなメリットとなります。

今回の記事では、基本的な構文やオプション、具体的な使い方について解説しました。LOAD DATA INFILEを活用することで、MySQLのデータ管理をより効率的に行えるようになるため、ぜひ日常のデータインポート業務に取り入れてみてください。

コメント