CSVファイルをMysqlにインポートする方法
phpmyadminを使えばインポートできますが、phpで実装したいときの方法です。
今回は、LOAD DATA LOCAL INFILEを使っての実装です。
この場合、csvファイルがある場所によって構文が変わってきます。
① LOAD DATA INFILE
インポート先のデータベースがあるサーバーにcsvファイルがある場合
② LOAD DATA LOCAL INFILE
クライアントにあるcsvファイルをサーバーのデータベースへ
構文
1 2 | LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名 FIELDS TERMINATED BY '区切り文字' ENCLOSED BY '囲み文字'; |
例
1 | LOAD DATA INFILE "sample.csv" INTO TABLE table FIELDS TERMINATED BY ',' ENCLOSED BY '"'; |
上記の構文、例は単なるサンプルですので、必要に応じて下記の引数と組み合わせていくのがいいと思います。
《LOAD DATA INFILE文の引数》
引数名 | 説明 |
LOW_PRIORITY | 他の処理よりも優先しない。 |
CONCURRENT | 処理実行中に、他のスレッドがこのテーブルからデータを取り出すことを許可。 |
LOCAL | FILE権限がなくても、ローカルファイルの読み込みを許可。IGNOREと同様、行の重複エラーが発生しても、挿入処理を続行します。 |
REPLACE | 同じユニークキーを持つ既存の行は、新しい行で置換します。 |
IGNORE | 既存の行とユニークキーと重複するキーを持つ新しい行は無視する。 |
IGNORE 数値 LINES | ファイルの先頭にある行を無視する。 |
FIELDS [OPTIONALLY] ENCLOSED BY | 各値のシングルクウォートを制御します。省略した場合、全ての値は ENCLOSED BY で指定した囲い文字で囲まれます。 指定した場合は、CHAR型・VARCHAR型の値(つまり数値以外)が ENCLOSED BY で指定した囲い文字で囲まれます。 ENCLOSED BY で指定した囲い文字が値の両端にある場合は、その文字を削除して囲まれます。 |
ESCAPED BY | 特殊文字をエスケープします。バックスラッシュをエスケープ文字として指定するには、’\\ ‘とします。 FIELDS ESCAPED BY を省略した場合は、エスケープ処理は行われません。 |
Author Profile
スターフィールド編集部
SHARE