PostgreSQLの(MySQLからの)show tables
と同等なものは何ですか?
psql
コマンドラインインターフェースから、これは現在のスキーマのすべてのテーブルを表示します。
\dt
プログラム的に(あるいはもちろんpsql
インターフェースからも):
SELECT * FROM pg_catalog.pg_tables;
システムテーブルはpg_catalogデータベースにあります。
スーパーユーザーとしてログイン:
Sudo -u postgres psql
\l
コマンドですべてのデータベースとユーザーをリストできます(\?
で他のコマンドをリストします)。
他のデータベースを表示する場合は、\c
、\c template1
などの\c postgres postgres
コマンドでユーザー/データベースを変更し、\d
、\dt
、または\dS
を使用してテーブル/ビュー/などを表示できます。
(完全を期すために)
(SQL標準) 情報スキーマ :に問い合わせることもできます。
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Postgresユーザーとして最初にログインします。
Sudo su - postgres
必要なデータベースに接続します。psql -d databaseName
\dt
は、接続しているデータベース内のすべてのテーブルのリストを返します。
PostgreSQLの対話型端末Psqlを使用して、PostgreSQLのテーブルを表示できます。
1. Psqlを起動します
通常、次のコマンドを実行してpsqlに入ることができます。
psql DBNAME USERNAME
例えば、psql template1 postgres
考えられる状況の1つは、rootとしてログインし、データベース名を覚えていないとします。次のコマンドを実行して、最初にPsqlに入るだけです。
Sudo -u postgres psql
いくつかのシステムでは、Sudoコマンドは利用できません、代わりに以下のどちらかのコマンドを実行することができます。
psql -U postgres
psql --username=postgres
2.テーブルを表示する
これでPsqlでは、次のようなコマンドを実行できます。
\?
はすべてのコマンドをリストします\l
リストデータベース\conninfo
は現在の接続に関する情報を表示します\c [DBNAME]
は新しいデータベースに接続します、例えば\c template1
\dt
リストテーブルSELECT * FROM my_table;
を実行できます(注:ステートメントはセミコロン;
で終了する必要があります)\q
はpsqlを終了します-Eフラグを指定してpsqlを実行すると、\dtなどを実装するために内部で使用されているクエリがエコーされます。
Sudo -u postgres psql -E
postgres=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
作成したテーブルのリストだけを見たい場合は、次のように入力するだけです。
\dt
しかし、表示するテーブルをカスタマイズするのに役立つPATTERN
もあります。 pg_catalog
スキーマを含むすべてを表示するには、*
を追加します。
\dt *
もしそうなら:\?
\ dt [S +] [PATTERN]リストテーブル
まず以下のコマンドでデータベースに接続します
\c database_name
そして、あなたはこのメッセージを見るでしょう - You are now connected to database database_name
。そして彼らは次のコマンドを実行します。
SELECT * FROM table_name;
Database_nameとtable_nameでは、データベースとテーブル名で更新するだけです。
テーブルのみを見る
=> \dt
スキーマテーブルを見たい場合
=>\dt+
特定のスキーマテーブルを見たい場合
=>\dt schema_name.*
あなたがすべてのデータベースとそのスキーマをチェックすることができるようにスーパーユーザーとしてログインしてください -
Sudo su - postgres
その後、次のコマンドを使用してpostgresqlシェルにアクセスできます。
psql
あなたは今、次のコマンドを使用して、すべてのデータベースのリストを確認することができます。 -
\l
あなたが同様にデータベースのサイズをチェックしたい場合は: -
\l+
データベースを見つけたら、次のコマンドを使用してそのデータベースに接続できます。
\c database_name
接続したら、次の方法でデータベーステーブルまたはスキーマを確認できます -
\d
さあシェルに戻るには: -
q
さらに特定のテーブルの使用の詳細を見るために: -
\d table_name
PostgreSQLでpgAdmin4を使用している場合は、これを使用してデータベースのテーブルを表示できます。
select * from information_schema.tables where table_schema='public';
\dt
だけで、使用しているデータベースの public スキーマ内のテーブルが一覧表示されます。私は自分のテーブルを別々のスキーマに保存するのが好きなので、受け入れられた答えは私にはうまくいきませんでした。
すべてのテーブル特定のスキーマ内を一覧表示するには、次の操作を行います。
1)目的のデータベースに接続します。
psql mydb
2)\dt
コマンドの後にテーブルを見たいスキーマ名を以下のように指定します。
\dt myschema.*
これは私が私が興味を持っている結果を示しています:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
\ dt(必須ではありません) - すでに接続している既存のデータベースのすべてのテーブルを一覧表示します。注意するのにも便利:
\ d [table_name] - 型情報、参照、キー制約を含む与えられたテーブルの全てのカラムを表示します。
現在のデータベース内のテーブルを\dt
で一覧表示できます。
Fwiw、\d tablename
は与えられたテーブルの詳細を表示します。MySQLのshow columns from tablename
のようなものですが、もう少し情報があります。
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
psql :\ dtを使用する
または
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'r'
AND relname NOT LIKE 'pg_%'
ORDER BY 1
まず第一にあなたはあなたのデータベースに接続する必要があります
私のデータベースは ubuntu です
このコマンドを使って接続する
\c ubuntu
このメッセージが表示されます
"これで、ユーザ" postgres "としてデータベース" ubuntu "に接続されました。
今
このコマンドを実行して、その中のすべてのテーブルを表示します。
\d+
\ dtはテーブルを一覧表示し、 "\ pset pager off"は別のテーブルに切り替えずにそれらを同じウィンドウに表示します。その機能をdbshellで死に愛してください。
クイックワンライナーとして
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|Perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
Psqlで外部テーブルを表示するには、\dE
を実行してください。