psql の主要機能(Windows 上)
【概要】
psql は,PostgreSQL データベースの管理と操作を行うコマンドラインツールである.本ページでは,Windows 上での psql の起動・終了,一般ユーザアカウントの管理,データベースの作成,SQL の実行とファイル出力,データの入出力について解説する.Ubuntu 上での操作は,別ページ »を参照.
【目次】
- 1. 前準備
- 2. psql の基本操作
- 3. psql の起動と終了
- 4. PostgreSQL での一般ユーザアカウント管理
- 5. データベースの作成
- 6. SQL の実行とファイル出力
- 7. psql のオプション機能
- 8. テーブルのインポートとエクスポート
【関連する外部ページ】
- PostgreSQL 公式ページ: https://www.postgresql.org/
- カーネル設定: https://www.postgresql.jp/document/18/html/kernel-resources.html
- インストール: https://www.postgresql.jp/document/18/html/installation.html
【サイト内の関連ページ】
1. 前準備
PostgreSQL のインストール
- Windows 環境における PostgreSQL 18,pgAdmin 4,PostGIS 3 のインストール手順と,psql を使用したテーブル定義およびレコード操作: 別ページ »
- Ubuntu 環境での PostgreSQL 18,pgAdmin 4,PostGIS 3 のインストール手順: 別ページ »
事前に決定する事項
本ページではデータベースを新規作成するため,データベース名と文字エンコーディングを事前に決める.
- データベース名: mydb(半角英数字および記号で設定できる.スペースは含めない)
- 文字エンコーディング: UTF8
また,一般ユーザのアカウントを作成するため,ユーザ名とパスワードを次のとおり設定する.
- ユーザ名: testuser
- パスワード: hoge$#34hoge5(実際の運用では,これとは異なる強固なパスワードを設定する)
一般ユーザのアカウント作成,データベースの作成には,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 データベース管理者のパスワードを入力する.プロンプトが表示されたら,管理者(postgres)のパスワードを入力する.パスワード入力時,画面上には文字が表示されない.
- 「\c」コマンドで,現在のロール名と接続中のデータベース名を確認する.
\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: 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:\\data\\zip.csv' with CSV;バックスラッシュを含むパスを記述するため,文字列の前にエスケープ文字列を示す「E」を付ける.出力先のディレクトリに PostgreSQL サーバプロセスの書き込み権限がない場合,「ERROR: could not open file ... for writing: Permission denied」というエラーが発生する.書き込み権限のあるディレクトリを指定する.