2013-06-28 10 views
5

Il mio DB ha un sacco di tabelle (dire 400+) e ricordo solo parte del nome di quello che sto cercando.cercare nomi di tabelle in PSQL

So che \d mostrerebbe tutti i tavoli, ma è troppo da guardare. C'è qualche comando per elencare tutte le tabelle i cui nomi corrispondono alla regex data?

Grazie

risposta

0

C'è una tabella denominata pg_tables che ha i nomi delle tabelle in esso.

2

Non molto conveniente a meno che non si faccia un proc, ma;

SELECT * FROM pg_tables WHERE SUBSTRING(tablename FROM '<regex>') <> ''; 

Per renderlo più conveniente, è possibile creare e chiamare un proc come;

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.

+0

Ricordati di aggiungere 'tablename' se avete solo bisogno i tablenames 'SELEZIONA tablename FROM WHERE pg_tables SUBSTRING (tablename DA '') <> '';' – zerocog

8

E 'costruito a psql, è possibile utilizzare i caratteri jolly in \d, \dt, ecc, ad esempio:

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) 

Ti consigliamo di utilizzare \dt dal \d visualizzerà dettagli per ogni tabella, e non solo elenca la tabella.

È possibile fare questo con schemi troppo, ad esempio:

\dt *.sometable 

elencherà tutte le tabelle denominate sometable in qualsiasi schema.

Molto più pratico rispetto alla scrittura di query contro pg_class unito a pg_namespace o query information_schema.

È accettata la consueta sintassi globbing, dove ? è un singolo carattere e * è zero o più caratteri. Quindi \dt ???? elencherebbe tutte le tabelle con nomi di quattro caratteri.

caratteri jolly multipli sono consentiti, ad esempio:

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) 
Problemi correlati