LoginSignup
1
0

More than 1 year has passed since last update.

【MySQL・PostgreSQL】SQLをワンライナーで実行する

Posted at

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する手もあります。

1
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
1
0