PSQL での PostgreSQL クエリの実行
PostgreSQL には 2つのオプションがあります。1 番目のオプションは PGADMIN4
または使用するその他のバージョン番号で、2 番目のオプションは PSQL です。 PSQL は、PostgreSQL セッションと対話し、ユーザー インターフェイスからクエリを実行できるコマンド ライン インターフェイスです。
PSQL は端末ベースのフロント エンドであり、ファイルとそのコマンド ラインから引数とクエリを受け取ることもできます。 それでは、PostgreSQL コマンド ラインである PSQL でクエリがどのように機能するかを理解しましょう。
PSQL を使用する基本的な方法論
Postgres のユーザー名とパスワードを使用して PSQL を起動し、正常にログインしたら、PostgreSQL ユーザー インターフェイスで実行するクエリをコマンド ラインで実行する方法を理解します。
SELECT
、INSERT
、UPDATE
などのキーワードを含むクエリを使用する場合は、不要なエラーを回避するために、正しい構文に従っていることを確認してください。 多くの人がセミコロン;
を見落としがちです。
セミコロンがないと、PSQL はクエリがまだ終了していないと見なし、ENTER を押しても終了しません。 したがって、次のように PSQL インスタンスにいるとします。
次に、テーブルをデータベースに INSERT
します。 ID
と MODEL
の 2つの列を持つテーブル BAG
を INSERT
したいと考えています。
クエリ:
CREATE table BAG (id INT, model TEXT);
出力:
セミコロンを入れ忘れて ENTER を押すと、画面に出力が得られず、空白のままになります。
出力:
同様に、INSERT
クエリを実行して、次のようにいくつかの値を入力できます。 (1, Adidas)
、(2, Jale)
、(3, Niky)
というデータセットをINSERT
します。
クエリ:
insert into BAG values (1, 'Adidas'), (2, 'Jale'), (3, 'Niky');
出力:
SELECT
クエリを実行し、TABLE
を返します。
出力:
PSQL でクエリを実行するのは簡単です。 ただし、条件があります。
セミコロン表記のないクエリの前にクエリを実行する傾向がある場合、後者のクエリはまったく機能しません。 したがって、セミコロンなしで SELECT BAG
を呼び出してから INSERT
操作を実行すると、PSQL はエラーを表示します。
出力:
SELECT
の後にセミコロンを置かないと、クエリが終了しません。 次の INSERT
クエリがたまたまこの SELECT
クエリに追加され、実行するとエラーが発生しました。
そのため、各ステートメントの最後にあるセミコロンに常に注意することをお勧めします。
データベースごとに個別にクエリを実行する
複数のデータベースを持つことができます。 データベースをリストまたは指定せずにクエリを実行すると、さらに混乱する可能性があります。
まず、すべてのデータベースを表示してみましょう。 PSQL でデータベースを表示するには、以下のクエリを実行できます。
クエリ:
\l or \l+
\l+
は \l
のより説明的なバージョンで、+
が追加されています。 私のデータベースは次のとおりです。
出力:
\l+
の場合、結果は次のようになります。
出力:
現在、POSTGRES
、TEMPLATE0
、TEMPLATE1
の 3つのデータベースがあります。 また、SELECT
ステートメントを使用してそれらを表示することもできます。
クエリ:
SELECT datname from PG_DATABASE:
出力:
datname
-----------
postgres
template1
template0
(3 rows)
PG_DATABASE
はすべてのデータベース情報を格納するカタログであり、DATNAME
はデータベースを格納するこのテーブル内の列です。 データベース Postgres に接続するには、\c
コマンドを使用しましょう。
指図:
\c postgres
その後、クエリを実行してテーブルを \dt
として取得できます。
クエリ:
\dt
出力:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | animal | table | postgres
public | bag | table | postgres
public | bus | table | postgres
public | car | table | postgres
public | cat | table | postgres
public | dog | table | postgres
public | horse | table | postgres
public | identity_number | table | postgres
public | mytable | table | postgres
public | person | table | postgres
public | person_details | table | postgres
public | rider | table | postgres
public | strings | table | postgres
public | student | table | postgres
public | tab | table | postgres
public | vehicle | table | postgres
(16 rows)
データベースTEMPLATE0
またはTEMPLATE1
に接続してテーブルを表示できますが、デフォルト設定により着信ユーザー接続を受け入れないため、エラーが表示されます。
出力:
特定のデータベースに対してクエリを実行するには、\c
コマンドを使用して接続してからクエリを実行します。
クエリ:
psql -U postgres -d postgres -c "SELECT * from BAG;"
-d
キーワードの後、Postgres データベースに接続し、クエリを実行します。 接続するデータベース名を書き込んでから、コマンドを発行しました。
-c
の後に単一のコンマでクエリを記述しないでください。エラーが発生します。 二重コンマを使用して有効な文字列にし、最後に安全のためにセミコロンを記述します。
二重カンマを使用しないと、次の例のようなエラーが発生します。
クエリ:
psql -U postgres -d postgres -c 'SELECT * FROM BAG;'
出力:
psql: warning: extra command-line argument "*" ignored
psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "BAG'" ignored
セミコロンの代わりに SINGLE LINE
構文を使用する
-S
または --SINGLE-LINE
コマンドを使用すると、セミコロンを必要とせずに単一行のクエリを自動的に終了できます。 PostgreSQL セッションを初期化するときに、次のコマンドを実行します。
指図:
psql -U postgres -S
また
psql -U postgres --single-line
PSQL セッションを実行すると、次のようになります。
postgres^# __
これは、postgres#
が postgres^#
に変更されたことを意味し、SINGLE LINE
ステートメントの使用を示しています。
クエリ:
select * from BAG
上記のクエリを実行すると、問題なく動作し、末尾にセミコロン (;
) が追加されていません。 セッションごとに必要なパスワードでデータベースを保護する場合、PSQL でセッションを初期化するときに PGPASSWORD
キーワードを使用できます。
PSQL での SQL クエリの読み取りにファイルを使用
より大きな SQL クエリを読み取るもう 1つの便利な実装は、記述された SQL クエリで .sql
拡張子ファイルを使用し、それを PSQL コマンド ラインから実行することです。 たとえば、次のクエリで .sql
拡張子を持つファイルを作成してみましょう。
クエリ:
SELECT * from BAG;
デスクトップにQUERY1.SQL
として保存しましょう。
PSQL セッションの初期化中にこれを実行するには。 次のコマンドを使用します。
指図:
psql -U postgres -f "C:\Users\Bilal Shahid\Desktop\query1.sql"
出力:
id | mode
----+--------
1 | Adidas
2 | Jale
3 | Nikey
1 | Adidas
2 | Jale
3 | Nikey
1 | Adidas
2 | Jale
3 | Nikey
4 | John
5 | mike
(11 rows)
-f
コマンドに相当する別のコマンドがあります。 既に PSQL セッション内にいて、ファイルからクエリを実行したい場合は、\i
コマンド。
クエリ:
postgres=# \i 'C:/Users/Bilal Shahid/Desktop/query1.sql'
バックスラッシュ (/
) と単一のコンマ ('
) を使用しないとエラーが返されます。
PSQL を効率的に使用する方法を学び、エラーを生成するさまざまな方法とその回避方法を理解していただければ幸いです。 注意深い理解を得るために、常にチュートリアルをよく読んでください。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub