0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQLのLOAD DATA INFLEコマンドでファイルをインポートする

Posted at

はじめに

担当している案件でMySQLで大量(10万件規模)のデータをinsertする必要があったため、
LOAD DATA INFILE コマンドでデータをインポートした際のナレッジや調査過程をまとめました。

案件で使用していたフレームワークがLaravelだったため、Laravel寄りのリンクが多くなっていますが、
他の言語/フレームワークでも、SQLを直接発行出来る機能があれば、代用は可能かと思います。

またMySQL以外でもOracleでも同様のコマンドがあるので、DBをOracleに変えた場合でも同じ実装は可能かと思います。

注意点

MySQLの起動オプションにlocal_infileを追加

MySQLの起動オプションにlocal_infileの設定を追加します。
以下のファイルに下記のように設定を追加してください。

/etc/mysql/conf.d/my.cnf
local_infile=true

mysqlコマンドの場合は上記のオプションを引数に追加して起動しましょう。
configファイルに追記した場合は、MySQLのサービスの再起動も忘れずに!

デバッグ/エラー解析

LOAD DATA INFILE コマンドは、MySQL側のインポート機能を直接呼び出す仕組みのため、
SELECT文やINSERT文のSQLの発行時のようにアプリケーション側のログにエラー内容が出力されることがありません。
そのため、デバッグやエラー解析は困難を極めます。
インポート先のテーブル名やカラム定義、インポートするファイル名やファイルパス等は念入りに確認しておいた方が良さそうです。
意外にtypoしていたりすると、気付かずハマります(苦笑)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?