雑なmysqlコンテナ利用法

2021-03-25
MySQL

ちょっとした検証とかで、MySQLコンテナを利用することが多いので、サッと使う時のノウハウ集。

DB立ち上げ

1
2
docker volume create my-volume
docker run --rm -v my-volume:/var/lib/mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql --secure-file-priv=''

ポイント

  • --secure-file-priv='' 指定で LOAD DATA 命令を利用可能に。
  • --rm で無駄なコンテナプロセスを残さない。
  • root の空パスワードを許可

もし、データを綺麗にリフレッシュしたくなったら、 docker volume rm my-volume して作り直す。

DB接続

ローカルには、MySQL Client をインストールしといてね。

1
$ mysql -h 127.0.0.1 -u root --local-infile=1

クライアント側からの --local-infile 許可を指定して接続しておく。

テーブル作成

細かい文字列をよく忘れるのでアンチョコ。

1
mysql> CREATE DATABASE hoge DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

ローカルCSVファイルからのデータ投入。

1
2
3
4
5
6
mysql> SET GLOBAL local_infile=1;

mysql> LOAD DATA LOCAL INFILE '/path_to_csv/bookdata.csv' INTO TABLE hoge \
FIELDS TERMINATED BY ','\
OPTIONALLY ENCLOSED BY '"'\
LINES TERMINATED BY '\n' (......);

(......) この箇所は、CSV列に対応するフィールド名を入れる。
(id, name, created_at)

※ このエントリは、雑で便利な利用法が思いついたら随時追記する。