MySQL使いのためのPostgreSQL入門

投稿者 おおかゆか 2009-02-19 12:47:00 GMT

ここ数年DBといえばMySQLしか使っておらず、PostgreSQLに最後に触ったのは8年くらい前のバージョン7の頃だったか。
現在の最新版バージョンは8.3でパフォーマンスも大幅に向上してMySQLをしのぐほどになり、またVACUUMの問題もおおむね解決された様子なので、また使ってみようかという気になった。

以前触ったことがあるといっても昔過ぎてさっぱり憶えておらず、MySQLのやり方が染み付いてしまっているので、リファレンスを見ながらやってもどうも思うようにいかずストレスが溜まる。
MySQLならこうやるところをPostgreSQLならこうやる、みたいな整合表があれば便利なのにと思って探してみたが、そのようなサイトはついぞ見つからなかった。ならば自分で作ってしまえと勢いで作ってみた。

ちなみにインストール方法やファイルの場所等は、Ubuntuでaptパッケージからインストールした場合のもので、他のOSやディストリビューションでは異なる場合もあるためあらかじめ断っておく。
なお書式は、

my) MySQLでのやり方
pg) PostgreSQLでのやり方

となっている。

インストール

$ sudo apt-get install postgresql

$ sudo passwd postgres
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

$ createuser -P USER_NAME
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) y

データベースの作成/削除

my) $ mysqladmin create DB_NAME
pg) $ createdb DB_NAME

my) $ mysqladmin drop DB_NAME
pg) $ dropdb DB_NAME

DBユーザーの作成/削除

my) mysql> grant PRIVILEGES on DB_NAME to USER_NAME identified by 'PASSWORD';
pg)
$ createuser -P USER_NAME

my) mysql> drop user UESR_NAME;
pg) $ dropuser USER_NAME

起動/停止

my) $ mysqld_multi start|stop
pg) $ pg_ctlcluster 8.3 main start|stop|restart

my) $ /etc/init.d/mysql start|stop|restart
pg) $ /etc/init.d/postgresql-8.3 start|stop|restart

対話型インターフェース

my) $ mysql [-u USER_NAME -pPASSWORD -h HOST_NAME -P PORT DB_NAME]
pg) $ psql [-U USER_NAME -W PASSWORD -h HOST_NAME -p PORT DB_NAME]

※mysqlはDB名を指定しなくても接続できるが、psqlはDB名を省略するとユーザ名と同じデータベースに接続しようとする。DB名は「psql -l」で一覧表示できる。

mysql> exit|quit|q
postgres=# q

mysql> use DB_NAME
postgres=# c|connect DB_NAME

mysql> show databases;
postgres=# l|list

mysql> show tables;
postgres=# dt

mysql> show index from TABLE_NAME;
postgres=# di

mysql> desc TABLE_NAME;
postgres=# d TABLE_NAME

mysql> load data infile 'FILE_NAME' into table TABLE_NAME;
postgres=# copy TABLE_NAME from FILE_NAME

mysql> select * from TABLE into outfile 'FILE_NAME';
postgres=# copy TABLE_NAME to
FILE_NAME

DBダンプ

my) $ mysqldump [--add-drop-table --nodata]
pg) $ pg_dump [-c|--clean -s|--schema-only]

設定ファイル

my) /etc/mysql/my.cnf
pg) /etc/postgresql/8.3/main/postgresql.conf

データ格納場所

my) /var/lib/mysql/
pg) /var/lib/postgresql/8.3/main/

管理用DB

my) mysql
pg) どのDBからもアクセスできる管理用テーブル群。pg_roles, pg_users, pg_database等がある

アクセス制御

my) mysqlデータベースのhost, db, userテーブル
pg) /etc/postgresql/8.3/main/pg_hba.conf

レプリケーション

my) 標準装備
pg) pgpool、PGCluster等を使う

デフォルトポート

my) 3306
pg) 5432

カテゴリ  | タグ  | コメント(0) | トラックバック(0) はてなブックマークへ はてなブックマークでの登録数

コメント

トラックバック

トラックバックリンク:
http://ja.verbmode.net/trackbacks?article_id=53

(leave url/email »)

   コメントのマークアップヘルプ 前のコメント