[解決済み] Psqlの全テーブルのリスト
質問
のテーブルをすべてリストアップしたいのですが、どうすればよいでしょうか。
liferay
データベースのすべてのテーブルをリストアップしたいです。どのようにすればよいのでしょうか?
私は実行したいです
SELECT * FROM applications;
の中で
liferay
データベースを使用します。
applications
は私のliferay dbのテーブルです。これはどのように行われるのでしょうか?
これは私のすべてのデータベースのリストです。
postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
liferay | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | liferay=CTc/postgres
lportal | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
どのように解決するのですか?
リストアップする場合 すべて テーブルを使用する必要があります。
\dt *.*
を使えば、すべてのテーブルを
をすべてのスキーマで
. これには
pg_catalog
にあるテーブル、システムテーブル、そして
information_schema
. すべてのユーザ定義スキーマのすべてのテーブルを指定するビルトインの方法はありません。
search_path
を実行する前に、対象となる全てのスキーマのリストに設定することができます。
\dt
.
これをプログラム的に行いたい場合もあるでしょうが、その場合は
psql
のバックスラッシュ・コマンドではうまくいきません。この場合
は
INFORMATION_SCHEMA
が助けに来てくれる。テーブルをリストアップするために
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
ちなみに、もしあなたが
psql
がバックスラッシュコマンドに応答して何をしているかを見たい場合は、次のように実行します。
psql
を実行すると
-E
フラグを使います。
$ psql -E regress
regress=# \list
********* QUERY **********
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************
ということで
psql
が検索しているのは
pg_catalog.pg_database
を検索しています。同様に、与えられたデータベース内のテーブルについても
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' WHEN 'f' THEN 'foreign table' 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;
標準SQLで、移植性の高い
INFORMATION_SCHEMA
を使用することが望ましいのですが、時には Pg 固有の情報が必要な場合があります。そのような場合は
システムカタログ
を直接問い合わせても問題ありませんし
psql -E
はそうする方法の有用なガイドとなりえます。
関連
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
Postgresqlのセルフインクリメントidをキーにした場合の重複問題の解決
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み] psqlの代替出力フォーマット
-
[解決済み] Postgresqlの場合。パスワード付きで psql を実行するスクリプト
-
[解決済み】PostgreSQLスキーマのテーブルを一覧表示する。
-
[解決済み] Postgresqlで「挿入無視」と「重複キー更新」(SQLマージ)をエミュレートする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
単語をソートするカスタム関数とそれをPostgreSQLで使用する(実装コード)
-
Postgresqlのデータベース権限まとめ
-
postgresql いくつかのメソッドは、要約の重複するデータを削除する
-
PostgreSQLのデータベースでLIKE文の効率を確保する方法(推奨)
-
サーバーに接続できませんでした:接続拒否(0x0000274D/10061)
-
[解決済み] Postgres ENUMデータ型またはCHECK CONSTRAINT?
-
[解決済み】PostgreSQLがインデックス付きカラムに対してシーケンシャルスキャンを実行するのはなぜですか?
-
[解決済み] PostgreSQL: ロールのログインが許可されていない
-
[解決済み] PostgreSQLのクエリで、整数を文字列に変換するにはどうすればよいですか?
-
[解決済み] Postgresql。条件付き一意性制約