diadia

興味があることをやってみる。自分のメモを残しておきます。

windowsのコマンドプロンプトからPostgreSQLを触る

今回の試み

今回はwindowspostgresqlを入れて、そしてコマンドプロンプトからログインできるかを試す。今までwebアプリケーションを作成するにはpostgresqlを使っていたもののサクラVPSで行っていた。だからLinuxwindowsかの違いや、リモートやローカルといった作業場所の違いがある。

参考 :
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を用いる。