SQL Shell(psql)を使用してでpostgreSQLにアクセスし、コマンドで操作をする方法 その1
目次
はじめに
PostgereSQLを1クリック インストーラーでダウンロード、インストールすることができます。Launchpadに下記の様にインストールされて表示されていると思います。
SQL Shell(psql)を使用することでpostgreSQLにアクセスし、コマンドで操作をすることが可能になりますが、普段使いのitermでは操作することができません。今回はitermからpsqlコマンドを使用できる様に設定していきます。
実行環境
macOS (Catalina) version 10.15.2
macbook Pro(15-inch, 2017)
brew –version : 2.2.2
nodebrew use (current: 12.13.1)
npm version (6.12.1)
PostgreSQLはどこにインストールされているのか
普段使いのitermやターミナルでpsqlコマンドを使用するにはshellにPATHを通さなければなりませんね。そこで、locateコマンドを使ってpostgreSQLの実行場所を探します。locateコマンドはマッチした条件のファイルを一覧で表示させることができます。
$ locate psql | grep /bin
しかし初めての場合は、以下の様なメッセージが表示されます。
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
データーベースを作成する様に指示が出ました。
言われている通り、sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plistコマンドをターミナルで実行します。
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
データーベースの作成には時間がかかる様です。次のコマンドで早くすることができる様です。それでも時間がかかりました。
sudo /usr/libexec/locate.updatedb
終わったらもう一度検索をかけます
$ locate psql | grep /bin
そうするとpsql関係のパスが表示されました。
/Library/PostgreSQL/11/bin/psql
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Info.plist
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF/psql
.bash_profileにPATHを通す
vi コマンドでエデイターを起動し、.bash_profileを編集します。
$ vi ~/.bash_profile
起動したらi + enterでインサートモードにすることで編集が可能になります。では、〜/ .bash_profileに次のようにパスに追加します。
$ export PATH=$PATH:/Library/PostgreSQL/11/bin
終了するにはescの後 :wqコマンドを使います。編集をセーブするコマンドで、セーブしない場合は:qで終了します。その場合は編集がセーブされませんので気をつけてください。
次にシステムに反映させます。
$ source .bash_profile
一応パスを確認しましょう。
$ echo $PATH
E45 readonly option is set(add ! to override)が出た場合
escから :w !sudo tee %と入力し、:q!で上書きすることができます。
:W !sudo tee %
:q!
psqlコマンドをitermで使用する
パスが通せたら実際にitermで確認しましょう。
$ psql
そうするとパスワードを聞かれます。しかし、インストール時のパスワードを叩いてもログインすることができない場合があります。私の時はそうでした。これはpostgreSQLの認証方法の様です。postgresでないUnixのユーザーでログインしたシェルからはログインできない様になっています。ですが次のコマンドを叩いてください。
$ psql -U postgres -h localhost -W
インストール時のパスワードを叩いてください。
psql (11.6) Type "help" for help.
postgres=#
ログインすることができました。
ではデーターベースを表示させましょう。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres-users | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
testdb | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
(7 rows)
この様に表示させることができました。
psqlコマンドによってデータベースやテーブルの作成、カラムやqueryを操作することもできます。ぜひ活用してみましょう。
まとめ
今回はpsqlコマンドのPATHを通すをやってきました。postgreSQLがどこのインストールされているのか調べるためにlocateコマンドを使ったり、PATHを通すために.bash_prfileを編集したりしました。
Awesome post! Keep up the great work! 🙂