psql の主要機能(Windows 上)
Ubuntu での操作については,別ページ »を参照.
【サイト内の主な PostgreSQL 関連ページ】
- Windows 環境における PostgreSQL 14.5,pgAdmin 4,PostGIS 3 のインストール手順と,psql を使用したテーブル定義およびレコード操作: 別ページ »
- Ubuntu 環境での PostgreSQL 14,pgAdmin 4,PostGIS 3 のインストール手順: 別ページ »
- PostgreSQL の活用方法: 別ページ »
【関連する外部ページ】
1. 前準備
PostgreSQL のインストール
- Windows 環境における PostgreSQL 14.5,pgAdmin 4,PostGIS 3 のインストール手順と,psql を使用したテーブル定義およびレコード操作: 別ページ »
- Ubuntu 環境での PostgreSQL 14,pgAdmin 4,PostGIS 3 のインストール手順: 別ページ »
事前に決定する事項
本ページではデータベースを新規作成するため,データベース名と文字エンコーディングを事前に決定する.本ページで使用する設定を以下に示す.
- データベース名: mydb
データベース名は,半角英数字および記号(スペースを除く)で設定できる.
- 文字エンコーディング: UTF8
また,一般ユーザのアカウントを作成するため,ユーザ名とパスワードを以下のとおり設定する.
- ユーザ名: testuser
- パスワード: hoge$#34hoge5
(実際の運用では異なるパスワードを設定すること)
一般ユーザのアカウント作成,データベースの作成および権限の設定には,PostgreSQL データベース管理者の認証情報が必要となるため,事前に確認する.本ページでは,PostgreSQL データベース管理者のユーザ名を postgres として説明する.
2. psql の基本操作
- psql --version: psql のバージョン情報の表示
- psql: psql の起動
- \copy: テーブルデータのインポート・エクスポート
- \d, \d+: テーブル構造の表示
- \db, \db+: テーブル空間の一覧表示
- \c: データベース接続の切り替えおよび現在の接続状態の確認
- \l: データベース一覧の表示
- \q: psql の終了
3. psql の起動と終了
psql コマンド
- Windows のコマンドプロンプトを起動する.
- psql -U postgres を実行する.
「postgres」は PostgreSQL データベース管理者のユーザ名を指定する.
psql -U postgres
- PostgreSQL データベース管理者のパスワードを入力する.
プロンプトが表示されたら,PostgreSQL データベース管理者(postgres)のパスワードを入力する.
パスワード入力時,画面上には文字が表示されない.
- 「\c」コマンドで,現在の PostgreSQL ロール名と接続中のデータベース名を確認する.
\c
- 「\l」コマンドで,データベース一覧を確認する.
システムデータベースである postgres,template0,template1 の存在を確認する.
\l
- 「\q」コマンドで psql を終了する.
SQL Shell の利用
Windows のスタートメニューから,「PostgreSQL <バージョン>」→「SQL Shell (psql)」を選択する.
接続設定では,以下の情報を入力する.
- Server [localhost]: Enter キー
- Database [postgres]: 接続先データベース名
- Port [5432]: Enter キー
- Username [postgres]: Enter キー
- Client Encoding [SJIS]: Enter キー
- ユーザ postgres のパスワード: PostgreSQL インストール時に設定したパスワード
4. PostgreSQL での一般ユーザアカウント管理
ロールおよび接続状態の確認
- 「psql -U postgres」でログインする.
- 次のコマンドで現在の接続状態とロール一覧を確認する.
\c \du
アカウントの作成
新規アカウントは create user コマンドで作成する.
-
ユーザ名 testuser のアカウントを作成する例:
create user testuser with password 'hoge$#34hoge5' createdb;
- 作成したアカウントで psql にログインし,動作を確認する.
アカウントの削除
アカウントは「drop user testuser」コマンドで削除する.
5. データベースの作成
データベースの作成には create database コマンドを使用する.
- mydb という名前のデータベースを作成する例:
文字エンコーディングは UTF8 を指定する.
コマンド実行後,エラーメッセージが表示されないことを確認する.
create database mydb encoding 'UTF8';- encoding 'UTF8' : データベースの文字エンコーディングの指定
- mydb : 作成するデータベース名
6. SQL の実行とファイル出力
テーブル定義とデータ挿入
create table commodity (
type integer primary key not null,
name text not null,
price integer);
insert into commodity values( 1, 'apple', 50 );
insert into commodity values( 2, 'orange', 20 );
insert into commodity values( 3, 'strawberry', 100 );
insert into commodity values( 4, 'watermelon', 150 );
insert into commodity values( 5, 'melon', 200 );
insert into commodity values( 6, 'banana', 100 );
SQL クエリの実行
select * from commodity;
実行結果の例:
type name price
---- ---------- -----
1 apple 50
2 orange 20
3 strawberry 100
4 watermelon 150
5 melon 200
6 banana 100
実行画面:
7. psql のオプション機能
データベース一覧の表示
「psql -U postgres -l」コマンドでデータベース一覧を表示する.Windows 環境ではコマンドプロンプトから実行する.
SQL 実行結果のファイル出力
psql 起動時に「-L <出力ファイル名>」オプションを指定する.
SQL ファイルの実行
psql 起動時に「-f <入力ファイル名>」オプションを指定する.
8. テーブルのインポートとエクスポート
テーブルデータの入出力には PostgreSQL の copy コマンドを使用する.
- データインポートの例
copy WORK from E'd:\\KEN_ALL_UTF8.csv' with csv;
(バックスラッシュを含むパスを記述するため,文字列の前にエスケープ文字列を示す「E」を付加する.)
- データエクスポートの例
copy ZIP2 to E'C:\\Program Files\\PostgreSQL\\14\\data\\zip.csv' with CSV;
(バックスラッシュを含むパスを記述するため,文字列の前にエスケープ文字列を示す「E」を付加する.)
出力先のディレクトリに PostgreSQL サーバプロセスの書き込み権限がない場合,「ERROR: could not open file ... for writing: Permission denied」というエラーが発生する.書き込み権限のあるディレクトリを指定する.