windowsのコマンドプロンプトからPostgreSQLを触る
今回の試み
今回はwindowsにpostgresqlを入れて、そしてコマンドプロンプトからログインできるかを試す。今までwebアプリケーションを作成するにはpostgresqlを使っていたもののサクラVPSで行っていた。だからLinuxかwindowsかの違いや、リモートやローカルといった作業場所の違いがある。
参考 :
https://qiita.com/wb773/items/c2fd0e1e0349a41b5844
https://lets.postgresql.jp/documents/tutorial/windows/
実行環境
- windows10
- postgresql11
インストール
https://lets.postgresql.jp/documents/tutorial/windows/
ログイン
コマンドプロンプトでpsqlコマンドを実行してpostgresでログインする。
psql -U postgres -d postgres
上記ではパスが通っていないので、C:\Program Files\PostgreSQL\11\binで実行する。psql.exeはbinディレクトリにあるから。
ユーザを作成してデータベースの権限を帰属させる
参考:https://qiita.com/wb773/items/248e6e083b2fe12e820a
http://torajirousan.hatenadiary.jp/entry/2018/09/10/054545
windowsでもpsqlコマンド実行後の流れは特にwindowsであろうとlinuxであろうと違いがないって感想だった。手順はpostgresでログイン後、新たにデータベースを作成する。そしてデータベース操作権限のあるユーザーを作成する。
C:\Program Files\PostgreSQL\11\bin>psql -U postgres -d postgres postgres=# CREATE DATABASE test_database; CREATE DATABASE postgres=# CREATE USER new_user WITH PASSWORD 'PASSW0RD'; CREATE ROLE postgres=# ALTER ROLE new_user SET client_encoding TO 'utf8'; ALTER ROLE postgres=# ALTER ROLE new_user SET default_transaction_isolation TO 'read committed'; ALTER ROLE postgres=# ALTER ROLE new_user SET timezone TO 'Asia/Tokyo'; ALTER ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE test_database TO new_user; GRANT postgres=# \q
binにあるコマンドについて分かったこと
psql.exeはデータベースの接続やsqlファイルの読込みやcreate table等のSQLの実行を行うことができる。
psql -U username -d dbname #データベースの接続
psql -U username -d dbname -f "file\path\**.sql" #sqlファイルを読みこんで、ファイル内のsqlを実行する
psql -U username -d dbname -c "CREATE TABLE test_table (userid varchar(20), address varchar(20));" #SQLの実行
pg_ctl.exeはpostgresqlのサービスの起動、停止などを実行する。これはservices.mscでもサービスの起動、停止をすることができるようだ。
https://www.postgresql.jp/document/9.3/html/app-pg-ctl.html
データベースのデータを複製する場合はpg_dump.exeを用いる。