====== PostgreSQLコマンド ====== ===== パスワード付でログインする ===== $ psql データベース名 -U ユーザー名 -W ===== PostgreSQLのユーザ作成 ===== PostgreSQLにユーザをcreateuserコマンドを使用して作成するが\\ PostgreSQLにユーザ作成するのはスーパーユーザで行ないます。\\ ※スーパーユーザとはpg_shadow テーブルで usesuper が設定されているユーザを指している。 createuser -a -d -U postgres -P ユーザー名 -オプション |-a(--adduser)|新しいPostgreSQLユーザは、他のユーザを作成することが許可。| |~|※このオプションを付けるとスーパーユーザ。 | |-d(--createdb)|新しいPostgreSQLユーザは、データベースの作成が許可されます。 | |-U|[接続ユーザ名]| |(--username)|PostgreSQLに接続するユーザ名を指定します。| |~|上記コマンドではpostgres(スーパーユーザ)で接続しています。 | |-P(--pwprompt)|新しいPostgreSQLユーザのパスワードのプロンプトを表示します。 | ==== ユーザの確認 ==== postgres=# select * from pg_shadow ; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ----------+----------+-------------+----------+-----------+-------------------------------------+----------+------------ postgres | 1 | t | t | t | | | matsui | 100 | t | f | f | md5a88cf805de7149ac382f054f03935580 | | (2 rows) ===== PostgreSQLのユーザ削除 ===== dropuser ユーザ名 (例) dropuser matsui ===== PostgreSQLのデータベースの作成(createdbの使用) ===== createdb -E [エンコード] -O [オーナー] -U [接続ユーザ名] [データベース名] -オプション |-E(--encording)|[エンコーディング名]|作成するデータベース内で使用する文字エンコード方式を指定します。| |-O(--owner)|[オーナ名]|作成するデータベースの所有者となるユーザを指定します。| |-U(--username)|[接続ユーザ名]|PostgreSQLに接続するユーザ名を指定します。| ===== PostgreSQLのデータベースの削除(dropdb) ===== dropdb [データベース名] ===== バックアップ・リストア(pg_dump) ===== [データベース名]にてバックアップを取ることが可能。その際、データベースの所有者にsuしておいた方がよい。 -主なオプション -a データのみをダンプ -b ラージオブジェクトもダンプする。(注: デフォルトではダンプされません) -d INSERTコマンドにてダンプ(通常はCOPYコマンド) -D カラム名を含めたINSERTコマンドにてダンプ -s テーブルのみダンプ -t 特定のテーブルのみダンプ -F アウトプットファイルの形式を指定(cがカスタム、tがtar、pがテキスト) -例(バックアップ) pg_dump database_name > database_name.sql -例(リストア) createdb にてdatabaseを作成し、同じユーザで以下のようにすればよい。 psql database_name < database_name.sql ※すでにdatabaseが存在する場合は、先にdropdbする必要がある。 ===== バックアップ・リストア(pg_dumpall) ===== #データベースのバックアップ $ pg_dumpall > allbackup.db #データベースのリストア (pg_dumpとは違いユーザなども作成してくれます) $ psql -f allbackup.db template1 ===== PostgreSQLでのゼロパディング ===== # select lpad(id,4,'0') as id from t_images order by id desc; こんな感じで表示される id ------ 0017 0015 0014 0012 0011 0010 0009 0008 0007 0006 0005 0003 0002 0001 (14 rows) -PostgreSQLのユーザ作成、データベース作成等の基本操作\\ [[http://www.develop-memo.com/database/postgresql/postgresqloperate.html]] -PostgreSQLデータベースのコマンド\\ [[http://y-kit.jp/saba/xp/postgrecmd.htm]] ===== [DEFAULTの設定・変更] ===== ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 0; ===== [DEFAULTの削除] ===== ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT; ===== フィールド名の変更 ===== ALTER TABLE (テーブル名) RENAME after_fild TO (変更後フィールド名) ====== PostgreSQLのコマンド ====== データベース作成   createdb [-D パス] [データベース名] データベース削除   dropdb [データベース名] インタラクティブなSQL実行   psql [データベース名] SQL実行   psql [データベース名] < SQLファイル ダンプ   pg_dumpall > ファイル名 pg_dump [-t テーブル名] データベース名 > ファイル名 レストア   psql template1 < ファイル名 psql -d template1 -f ファイル名 pg_restore [ -d データベース名] ファイル名 エクスポート   psql [-d データベース名] -t -c "SQL" > ファイル名 ===== psqlのコマンド ===== コマンド一覧   \? 終了   \q データベース一覧   \l 組み込み関数一覧   \df テーブル一覧   \d 集約関数一覧   \da テーブル詳細   \d テーブル名 文字コード表示   \encoding テーブル権限   \z   ===== SQL ===== PostgreSQLのバージョン   SELECT version(); -------------------------------------------------------------------------------- テーブルの作成   CREATE TABLE テーブル名; テーブルの削除   DROP TABLE テーブル名; テーブル名の変更   ALTER TABLE テーブル名 RENAME TO 新テーブル名; -------------------------------------------------------------------------------- 列の追加   ALTER TABLE テーブル名 ADD COLUMN 列の定義; 列の削除   ALTER TABLE テーブル名 DROP COLUMN 列名; 列名の変更   ALTER TABLE テーブル名 RENAME COLUMN 列名 TO 新列名; -------------------------------------------------------------------------------- 制約の追加   ALTER TABLE テーブル名 ADD CONSTRAINT 制約名 UNIQUE ( 列名 [, 列名]... ); NOT-NULL制約の追加   ALTER TABLE テーブル名 ALTER COLUMN 列名 SET NOT NULL; 制約の削除   ALTER TABLE テーブル名 DROP CONSTRAINT 制約名; NOT-NULL制約の削除   ALTER TABLE テーブル名 ALTER COLUMN 列名 DROP NOT NULL; デフォルトの追加   ALTER TABLE テーブル名 ALTER COLUMN 列名 SET DEFAULT デフォルト値; デフォルトの削除   ALTER TABLE テーブル名 ALTER COLUMN 列名 DROP DEFAULT; ===== postgreSQLでデータ型の変更 ===== ※postgreSQLではデータ型の変更ができません。\\ 新たにフィールドを作ってデータを写してデータフィールドを変更するというめんどくさい処理がいります。 ①ALTER TABLE (テーブル名) ADD COLUMN after_fild (変更後データ型) ②UPDATE (テーブル名) SET after_fild = (変更前フィールド名) ③ALTER TABLE (テーブル名) DROP (変更前フィールド名); ④ALTER TABLE (テーブル名) RENAME after_fild TO (変更後フィールド名) ===== postgresqlチップス ===== [[http://ash.jp/db/pg_tips.htm>http://ash.jp/db/pg_tips.htm]] ==== 縦表示 ==== mysql だと末尾に 「\G」と付けると、出力が縦表示なるけど、SQLだと「\x」を実行してからsqlを打つと縦表示になる。 通常横表示 testdb=# select pid,usename,client_addr from pg_stat_replication; pid | usename | client_addr -------+----------+-------------- 19549 | postgres | 172.16.0.114 (1 row) 「\x」を一回打っておく testdb=# \x Expanded display is on. その後の出力は、縦表示になります。 testdb=# select pid,usename,client_addr from pg_stat_replication; -[ RECORD 1 ]------------- pid | 19549 usename | postgres client_addr | 172.16.0.114 ==== パスワードなしにする ==== export PGPASSWORD=hogehoge_password {{tag>PostgreSQL}}