今日はShellでPostgresqlを接続し、SQL文を実行する方法を紹介します。
SQL実行エラーの処理を含めて、参照いただけますと幸いです。
ヒアドキュメントでpsqlを実行する方法①
#!/bin/bash
psql -U ユーザ名 -d データベース名 -h ホスト名 << EOF
select count(1) from test;
EOF
exit $?
psql -U ユーザ名 -d データベース名 -h ホスト名 << EOF
select count(1) from test;
EOF
exit $?
ShellでSQLファイルを実行する方法②
一つSQLファイルを実行する場合
#!/bin/bash
psql -U ユーザ名 -d データベース名 -h ホスト名 -f select.sql
exit $?
psql -U ユーザ名 -d データベース名 -h ホスト名 -f select.sql
exit $?
select.sqlの内容:
select count(1) from test;
select count(1) from test;
複数SQLファイルを実行する場合
#!/bin/bash
psql -U ユーザ名 -d データベース名 -h ホスト名 -f select.sql
exit $?
psql -U ユーザ名 -d データベース名 -h ホスト名 -f select.sql
exit $?
select.sqlの内容:
\i select1.sql
\i select2.sql
\i select1.sql
\i select2.sql
パイプで実行SQLを渡してpsqlを実行する方法③
直接SQLの内容を渡す方法
#!/bin/bash
(
echo -e “SELECT COUNT(*) FROM test;”
) | psql -U ユーザ名 -d データベース名 -h ホスト名
exit $?
(
echo -e “SELECT COUNT(*) FROM test;”
) | psql -U ユーザ名 -d データベース名 -h ホスト名
exit $?
変数を作成してから、実行する。
#!/bin/bash
sql=”select count(1) from test;”
echo “${sql}” | psql -U ユーザ名 -d データベース名 -h ホスト名
exit $?
sql=”select count(1) from test;”
echo “${sql}” | psql -U ユーザ名 -d データベース名 -h ホスト名
exit $?
直接にSQLを実行する方法④
#!/bin/bash
psql -U ユーザ名 -d データベース名 -h ホスト名 -c “select count(1) from test;”
exit $?
psql -U ユーザ名 -d データベース名 -h ホスト名 -c “select count(1) from test;”
exit $?