まず、現在使用しているデータベースと同じ名前のデータベースを作成すると、データベースの名前を明示的に宣言せずにデフォルトのデータベースを使用して新しいテーブルを作成する場合のエラーを防ぐことができます。
「skynotify」をユーザー名に置き換えます。
psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"
-d は、この対話型セッション中に明示的にデータベース名を含まない SQL ステートメントのデフォルトとして使用するデータベースを明示的に宣言します。
PostgresQL サーバーの内容を明確に把握するための基本事項。
psql を対話的に使用するには、既存のデータベースに接続する必要があります。幸いなことに、psql にデータベースのリストを問い合わせることができます。
psql -l
.
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------------------------+-----------+----------+-------------+-------------+-------------------
skynotify | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
myapp_dev | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
ruby-getting-started_development | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
template1 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
(6 rows)
これはインタラクティブ コンソールを起動しません。ターミナルにテキスト ベースのテーブルを出力するだけです。
別の回答が言うように、postgres は常に作成されるため、コンソールを他のデータベースで動作させたい場合は、それをフェールセーフ データベースとして使用する必要があります。そこにない場合は、データベースを一覧表示してから、それらのいずれかを使用します。
同様の方法で、データベースからテーブルを選択します。
psql -d postgres -c "\dt;"
私の「postgres」データベースにはテーブルがありませんが、テーブルがあるデータベースはテキストベースのテーブルを端末 (標準出力) に出力します。
完全を期すために、テーブルからすべての行を選択することもできます。
psql -d ruby-getting-started_development -c "SELECT * FROM widgets;"
.
id | name | description | stock | created_at | updated_at
----+------+-------------+-------+------------+------------
(0 rows)
返される行がゼロの場合でも、フィールド名を取得できます。
テーブルに 12 行を超える行がある場合、または不明な場合は、データベース内のデータ量を把握するために、行数から始める方が便利です。
psql -d ruby-getting-started_development -c "SELECT count(*) FROM widgets;"
.
count
-------
0
(1 row)
「1 行」という言葉に混乱しないでください。これはクエリによって返される行数を表しているだけですが、1 行には必要な数 (この例では 0) が含まれています。
注: 所有者を定義せずに作成されたデータベースは、現在のユーザーが所有します。