LoginSignup
0
0

More than 3 years have passed since last update.

Docker環境で複数のSQLを一括実行

Last updated at Posted at 2020-07-12

目的

EC-CUBE4のDocker環境で特定ディレクトリ内のSQLファイルすべてをコマンドラインで一括実行したい。

方法

  1. SQLファイル置き場を作成するため、docker-compose.ymlに下記のように行を追加する。

    docker-compose.yml
    services:
      mysql:
        volumes:
          - ./additional_sql:/home/additional_sql # この行を追加
    
  2. docker-compose up -dする。

  3. プロジェクトフォルダ直下に「additional_sql」フォルダが作成されるので、そこに実行させたいSQLファイルを保存する。

  4. プロジェクトフォルダ直下に「additional_sql」フォルダ内のSQLファイルを全て実行するシェルスクリプトを作成する。

    additional_sql.sh
    #!/usr/bin/env bash
    
    # additional_sqlフォルダ内の全SQLファイルをEC-CUBEのDBにて実行する。
    for file in ./additional_sql/*.sql
    do
        docker-compose exec mysql bash -c "mysql -u dbuser -psecret eccubedb < /home/${file}"
    done
    
  5. 下記コマンドラインをプロジェクトフォルダ直下で実行する。

    # WindowsのGit Bashの場合、TTYエラーを避けるためのお約束
    $ exec winpty bash
    
    # additional_sqlフォルダ内の全SQLファイルを実行するシェルスクリプトを実行
    $ ./additional_sql.sh
    

SQLファイル作成時の注意点

冒頭にCHARSET utf8;を記述しないと、日本語が文字化けしてDB登録されてしまう。

参考

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