DBはテーブルがたくさんあります。(400と言ってください)、私は探している名前の一部を覚えています。PSQLのテーブル名を参照
私は\d
がすべてのテーブルを表示することを知っていますが、それはあまりにも見るべきです。与えられた正規表現と名前が一致するすべてのテーブルをリストするコマンドがありますか?
おかげ
DBはテーブルがたくさんあります。(400と言ってください)、私は探している名前の一部を覚えています。PSQLのテーブル名を参照
私は\d
がすべてのテーブルを表示することを知っていますが、それはあまりにも見るべきです。与えられた正規表現と名前が一致するすべてのテーブルをリストするコマンドがありますか?
おかげ
それにすべてのテーブル名を持っているpg_tables
と呼ばれるテーブルがあります。
あなたはそれをprocにしない限りはあまり便利ではありませんが、
SELECT * FROM pg_tables WHERE SUBSTRING(tablename FROM '<regex>') <> '';
さらに便利にするために、procを作成して呼び出すことができます。
CREATE FUNCTION ft(TEXT) RETURNS SETOF pg_tables AS
'SELECT * FROM pg_tables WHERE SUBSTRING(tablename from $1) <> '''';'
LANGUAGE SQL;
SELECT * FROM ft('.*oc.*') -- Gets all tables matching `.*oc.*`
An SQLfiddle to test both with。これは、psqlのに組み込まれています
、あなたは例えば、\d
、\dt
などでワイルドカードを使用することができます。
craig=> \dt test*
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+-------
public | test | table | craig
public | testtable | table | craig
public | testu | table | craig
public | testx | table | craig
(4 rows)
\d
だけではなく、各テーブルの詳細が表示されますので、あなたは\dt
を使用したいと思いますテーブルを一覧表示します。
あなたは、あまりにもスキーマで例えばこれを行うことができます:
\dt *.sometable
は、任意のスキーマ内sometable
という名前のすべてのテーブルが一覧表示されます。
pg_class
には、pg_namespace
に、またはinformation_schema
には、クエリを書くよりもずっと便利です。
?
は任意の単一の文字で、*
は0文字以上の通常のグロブ構文が使用できます。したがって、\dt ????
は4文字の名前を持つすべてのテーブルをリストします。あなただけpg_tables FROMテーブル名を選択 `テーブル名を必要とする場合
craig=> \dt public.*e?t*
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+-------
public | exclude_test | table | craig
public | prep_test | table | craig
public | test | table | craig
public | testtable | table | craig
public | testu | table | craig
public | testx | table | craig
(6 rows)
'テーブル名' を追加することを忘れないでくださいWHERE SUBSTRING( '' FROMテーブル名)<> '';':
複数のワイルドカードは、例えば、許可されています – zerocog