PostgreSQL
#postgresql
https://wiki.debian.org/PostgreSql
http://www.unisys.co.jp/solution/tec/atlasbase/s33drt000005ei89-att/dbm_1001_postresql.pdf
PostgreSQL のコマンドを使用する場合のユーザは、-U オプションを使って明示的に指定しないかぎり、OS のログインしているユーザと同じ名前のものが使用される。
データベースの作成
$ createdb mydb
例
code:_
$ sudo -u postgres bash
$ createdb --encoding=SQL_ASCII --locale=C --template=template0 foo
$ createuser www
$ createuser www-data
$ psql -f /vagrant/foo.dump foo
テンプレートデータベース
template0 と template1 があり、CREATE DATABASE は template1 を元にデータベースを作成する。
データベースの削除
削除しようとしているデータベースの所有者とスーパーユーザのみ実行可能。
削除しようとしているデータベースに接続している時にはDROP DATABASEを実行することはできない。別のデータベースへ接続する必要がある。
$ dropdb mydb
データベースの一覧
$ psql -l
mydb=# \l
データベースへ接続
$ psql mydb
データベース名を省略するとユーザ名と同じものが指定されたことになる。
テーブルの一覧
mydb=# \dt
テーブルの定義の表示
MySQL の desc と同じようなもの。
mydb=# \d weather
ロール (ユーザ?) の一覧
mydb=# \du
SELECT * FROM pg_roles;
バックアップとリストア
https://www.postgresql.jp/document/9.1/html/backup.html
OSC北海道2014_JPUG資料
MySQL の \G 相当のこと
\x でフォーマットを切り替えられる
postgresql で mysql の ¥G みたいな表示 | BmathLog
コマンドの履歴を残したくない
MySQL の場合 → mysql コマンドの履歴を残したくない場合は MYSQL_HISTFILE=/dev/null - 酒日記 はてな支店
.psqlrc で \set HISTCONTROL ignorespace と設定するとスペースで始まるコマンドは履歴に記録されない。あるいは、\set HISTFILE /dev/null を設定すればすべてのコマンドが履歴に残らないようになる。
--no-readline オプションを使っても履歴が残らないようにできるが、readline の機能が使えなくなるので不便。
https://www.postgresql.jp/document/9.1/html/app-psql.html
テーブルを空にしたい
TRUNCATE TABLE table_name;
オートインクリメントな ID を1から振りなおしたい場合
TRUNCATE TABLE table_name RESTART IDENTITY;
CUI クライアント
psql
pgcli
http://pgcli.com/ http://pgcli.com/
GUI クライアント
GUI Tools for PostgreSQL on the Mac
PSequel
PSequel, a PostgreSQL GUI Tool for Mac OS X
MySQL の GUI クライアント Sequel Pro と似たようなかんじできれい。
ただ EUC-JP な文字列が unreadable data となって読むことができず、エンコーディングの設定も変えられそうにない。おしい。
Postico
Postico – a modern PostgreSQL client for the Mac
モダンな UI。これも EUC-JP な文字列が文字化けしていて読むことができず、エンコーディングの設定もなさそう。
pgAdmin
https://www.pgadmin.org/ https://www.pgadmin.org/
pgAdmin 4 は、SSH Tunnel の設定がない…?