FrontPage

SQL for PostGreSQL

  • デフォルトの管理者ユーザは, postgres
  • パスワードを忘れてしまったとき、data/pg_hba.confファイルのパスワードをmd5とかから、trustにすれば、no passwordになる
  • 日本語マニュアルのページ

http://www.postgresql.jp/document/current/html/index.html

PostGreSQLとMySQLの対応表

mysqlは、mysql -u user-name -p passwordで、mysqlシェルに入ってDB操作を行うのに対して、PostGreSQLは、シェルから、以下の表で示すDB操作をOSのシェルから操作。

参考URL

http://info.odic.ne.jp/rdbms/pgmy.php

機能PostGresSQLMySQL
PostGres?はOSのコマンドラインからMySQLは、mysql -u user-name -p でMySQLシェルから
DB作成関係
DB作成createdb -U user-name DATABASE_NAMEcreate database DATABASE_NAME
DB削除dropdb -U user-name DATABASE_NAMEdrop DATABASE_NAME;
DB選択psql -U user-name DATABASE_NAMEuse DATABASE_NAME;
DB一覧psql -l (シェルからは\l;)show databases;

PostGres?へのユーザ追加

以下のブログが参考になる

http://blog.livedoor.jp/rs6000/archives/64863720.html

  • ユーザ作成

OSのシェルから、hogehogeという既にPostGreSQLに存在するユーザで、 newuserというユーザを作成

createuser -U hogehoge newuser

linuxでは、postgresというユーザー名でpostgresqlサーバが立ち上がっている。 そこで、rootになって強引にpostgresにパスワードを設定し、さらに、

/var/lib/pgsql/data/pg_hba.conf

host   all all 192.168.X.X  255.255.255.255 trust

として、su postgresで、postgresユーザーになって、createuserすると成功した。 Linuxではこれが正当か???

  • パスワード設定

上記の場合、hogehogeで入って、ALTERコマンドでパスワードを設定する。

D:\> psql -U hogehoge
hogehoge=# alter user <ユーザ名> password '<パスワード>';

hogehoge=# alter user newuser password 'newpass';

なぜか、newuserというDBを作成しないと、newuserでログインできない。

D:\> createdb -U newuser newuser

これで、ログインはできたが、MySQLと比べると不可思議。

→誤解

PostGreSQLでは、psqlコマンドの時点で、DBを指定する。 だから、上記の記述は、

D:\> createdb -U [username] [databasename]

で、所有者[username]の、データベース(名前が [databasename])を作成し、 psql -U [username] [databasename]で、接続(コマンドラインベース)する。

文字列へのNULL値の代入

SQL文でDEFAULT NULLとしても、character varying(xx)だとスペースで埋められてしまう

NULLを明示的に入れないと   where XXXXX is NULLに引っかからない

COPYコマンドによるCSVファイルなど、ファイルからテーブルへの読み込み

http://www.hoge256.net/2008/08/179.html

たとえば、次のような感じ

copy テーブル名 from '/home/hogehoge/xxxなどフルパスで指定' using delimiters ',';

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-08-29 (月) 21:41:06 (1269d)