AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

RDS で LOAD DATA LOCAL INFILE を実行する

いつも忘れて調べるんだけど、正解がシュッと出てこないのでインターネットの敗北。 我の勝利〜。

--local-infile=1 を利用する

デフォルトで用意されるパラメータグループか、それに準拠するパラメータを利用していれば、 --local-infile=1 を付けて mysql コマンドを実行すればよい。

以下は扱う CSV ファイルが /tmp/example.csv として設置されている前提で書いています。 なんで /tmp/ かっていうと mysql コマンド以下から読み取れるファイル、権限設定を考えるのがめんどくさいからですね。 /tmp/ サイコー(こういうヤツが事故を起こす)。

mysql CLI から実行する

mysql -u ${ユーザ名} -p -h ${エンドポイント} --local-infile=1 ${データベース名}
Password:

mysql> LOAD DATA LOCAL INFILE '/tmp/example.csv' INTO TABLE ほんにゃかふんにゃか;

コマンドを流し込む

mysql -u ${ユーザ名} -p -h ${エンドポイント} --local-infile=1 ${データベース名} < ./example.sql
Password:
example.sql
USE ${データベース名};

LOAD DATA LOCAL INFILE '/tmp/example.csv' INTO TABLE ほんにゃかふんにゃか;

以上だ

以上だ……。

なんか太古の昔はパラメータグループから特定のコンフィグを変更する、とかお作法あった気がするんだけどよく覚えてないです。 やったね!