MySQL
MySQLサーバのホストを127.0.0.1
、ポートを3306
、接続ユーザをroot
、パスワードをpassword
と仮定します。
-pオプションとパスワードの間に空白を入れないのがコツです。
mysql -h 127.0.0.1 -P 3306 -u root -ppassword -e "select now()"
上の場合だと、結果のみが出力されます。
実行SQLも出力する場合は、verbose
オプションも指定します。
mysql -h 127.0.0.1 -P 3306 -u root -ppassword -e "select now()" -v
複数のSQL文などをファイルに記載し、それを実行したい場合、次のように実行します。
実は単にリダイレクトでも実行可能ですが、MySQLの場合はexecuteオプション+cat
を使ったほうが出力が見やすいです。
mysql -h 127.0.0.1 -P 3306 -u root -ppassword -e "$(cat file.sql)"
実行SQLも出力する場合は、verbose
オプションも指定します。
mysql -h 127.0.0.1 -P 3306 -u root -ppassword -e "$(cat file.sql)" -v
最後に、今回は完全にワンライナーで書きましたが、パスワードはmy.cnfに登録すると良いです。
PostgreSQL
PostgreSQLサーバのホストを127.0.0.1
、ポートを5432
、接続ユーザをpostgres
、パスワードをpassword
、接続データベースをpostgres
と仮定します。
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres postgres -c 'select now()'
上の場合だと、結果のみが出力されます。
実行SQLも出力する場合は、echo-queries
オプションも指定します。
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres postgres -c 'select now()' -e
複数のSQL文などをファイルに記載し、それを実行したい場合、次のように実行します。
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres postgres < file.sql
実行SQLも出力する場合は、echo-queries
オプションも指定します。
PGPASSWORD=postgres psql -h 127.0.0.1 -p 5432 -U postgres postgres -e < file.sql
最後に、今回は完全にワンライナーで書きましたが、パスワードはpgpassに登録すると良いです。
もしくは、PGPASSWORDをexportする手もあります。