Kuinka luetellaan kaikki tietokannat ja taulukot psql: n avulla?

Yritän oppia PostgreSQL-hallintoa ja olen oppinut käyttämään komentorivityökalua psql.

Kun kirjaudun sisään osoitteella psql --username=postgres, miten luetellaan kaikki tietokannat ja taulukot?

Olen kokeillut \d, d ja dS+, mutta mitään ei ole luettelossa. Olen luonut kaksi tietokantaa ja muutaman taulukon pgAdmin III: lla, joten tiedän, että ne pitäisi luetella.

Kommentit

  • Jos haluat käyttää sitä Suorita komentorivin kautta psql -l
  • Tämän kommentin on ehdottomasti oltava yksi tärkeimmistä vastauksista! Jos tarvitset todennusta, voit myös psql --username=postgres -l.

Vastaa

Huomaa seuraavat komennot:

  • \list tai \l: luetteloi kaikki tietokannat
  • \dt: luetteloi kaikki nykyisen tietokannan taulukot search_path
  • \dt *.: listaa kaikki nykyisen tietokannan taulukot search_path

Et koskaan näe taulukoita muissa tietokannoissa, nämä taulukot aren ei ole näkyvissä. Sinun on muodostettava yhteys oikeaan tietokantaan, jotta näet sen taulukot (ja muut objektit).

Tietokantojen vaihtaminen:

\connect database_name tai \c database_name

Katso psql -opasta.

Kommentit

  • Voit muodostaa yhteyden tiettyyn tietokantaan käyttämällä \c db_name.
  • \dt ei ’ näyttää olevan luettelo kaikista nykyisen tietokannan taulukoista (näyttää siltä, että ne sulkevat pois ne ’ t, jotka eivät ole search_path ainakin kohdassa 9.2)
  • \dt *. listaa kaikki taulukot kaikissa skeemeissä ilman, että sinun tarvitsee muokata hakupolkua.
  • \ l + on suosikkini – se näyttää myös levyn käytön.
  • Windowsissa voin luetella tietokannat tällä komennolla psql -U username -l, mutta se ei toimi kauttaviivan version kanssa.

vastaus

Tässä luetellaan tietokannat:

SELECT datname FROM pg_database WHERE datistemplate = false; 

Tässä luetellaan taulukot nykyisessä tietokannassa.

SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name; 

Kommentit

  • Sinä ’ on oikeassa, mutta kysymys koski psql-työkalun metakomentoja. \ dt on paljon helpompaa kuin minkä tahansa kyselyn kirjoittaminen.
  • Luulen, että tämä on Hieno vastaus, koska se voidaan suorittaa Linux-komentoriviltä sen sijaan, että tarvitsisit olla psql-tulkissa, joka joskus jumittuu minulle käyttämällä ExtraPutty.
  • Pelasti myös päiväni. Erityistapauksessani ’ m lisäämällä WHERE table_schema = 'public', koska haluan jättää vain mukautetut taulukot.
  • Jos aloitat psql -E-lipun kanssa, se näyttää todellisen kyselyn, kun käytät metakomentoa.
  • Kyllä, mielestäni se on ’ hyvä vastaus avulla voit liittyä ja kysellä tietokantoja hallitummin varsinkin kun haluat luoda jonkin käsikirjoituksen suuresta tietokantaluettelosta. Kiitos.

Vastaa

Postgresql: ssä nämä terminaalikomennot luetellaan käytettävissä olevat tietokannat

el@defiant$ /bin/psql -h localhost --username=pgadmin --list 

Tai komento ilmoitettiin yksinkertaisemmin:

psql -U pgadmin -l 

Nämä komennot tulostavat tämän päätelaitteelle:

 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- kurz_prod | pgadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | pgadmin | pgadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows) 

Nämä ovat käytettävissä olevia tietokantoja.

PSQL: ssä nämä komennot luetellaan käytettävissä olevat taulukot

Sinun on määritettävä tietokanta ennen kuin aloitat voi luetteloida taulukot kyseisessä tietokannassa.

el@defiant$ psql -U pgadmin -d kurz_prod 

Tämä johtaa sinut psql-päätelaitteeseen:

kurz_prod=# 

Käytä komentoa \d tarkoittaen kaikkien taulukoiden, näkymien ja jaksojen näyttämistä

kurz_prod=# \d 

Tämä tulostaa:

 List of relations Schema | Name | Type | Owner --------+---------+----------+--------- public | mytable | table | pgadmin public | testing | sequence | pgadmin (2 rows) 

Poistu sitten psql-päätteestä kirjoittamalla \q ja painamalla Enter-näppäintä. Tai Ctrl-D tekee saman. Nämä ovat kyseisen tietokannan taulukoita.

Kommentit

  • \ d ei vain luetella taulukoita: \d[S+] list tables, views, and sequences
  • Minulle tämä on ” oikea ” vastaus, koska se ei ’ t edellyttää, että olet jo yhteydessä olemassa olevaan tietokantaan.
  • Yksi linja skripteissä käytettäväksi (pääkäyttäjänä): su - -c 'psql -U postgres postgres -P pager=off -P tuples_only=on -l' postgres | cut -d'|' -f1 | tr -d '[:blank:]' | grep -vE '$^'

Vastaus

\l on myös lyhenne sanoille \list. Siellä on melko paljon kauttaviivakomentoja, jotka voit luetella psql: ssä käyttämällä \?.

Vastaa

Saadaksesi lisätietoja tietokannasta ja taulukkoluettelosta, voit:

\l+ tietokantojen luettelointiin

 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description ------------+----------+----------+-------------+-------------+-----------------------+---------+------------+-------------------------------------------- pgbench | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 29 MB | pg_default | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 6073 kB | pg_default | default administrative connection database slonmaster | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1401 MB | movespace | slonslave | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 32 MB | pg_default | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 5785 kB | pg_default | unmodifiable empty database | | | | | postgres=CTc/postgres | | | template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +| 5985 kB | pg_default | default template for new databases | | | | | postgres=CTc/postgres | | | test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 13 MB | pg_default | (7 rows) 

ja

\d+ näyttää kaikki nykyisen tietokannan nykyisen hakupolun skeeman taulukot.

test=# \dn+ --list schemas List of schemas Name | Owner | Access privileges | Description --------+----------+----------------------+------------------------ public | postgres | postgres=UC/postgres+| standard public schema | | =UC/postgres | schema1 | postgres | postgres=UC/postgres+| | | =UC/postgres | (2 row) test=# set search_path to schema1, public; SET test=# \d+ List of relations Schema | Name | Type | Owner | Size | Description ---------+-----------------+-------+--------------+------------+------------- public | all_units | table | postgres | 0 bytes | public | asset | table | postgres | 16 kB | public | asset_attribute | table | postgres | 8192 bytes | public | food | table | postgres | 48 kB | public | name_log | table | postgres | 8192 bytes | public | outable | table | ordinaryuser | 0 bytes | public | outable2 | table | ordinaryuser | 0 bytes | public | test | table | postgres | 16 kB | public | usr | table | postgres | 5008 kB | schema1 | t1 | table | postgres | 0 bytes | (10 rows) 

Vastaa

Pg_Admin -sovelluksesta voit yksinkertaisesti suorittaa seuraavat tiedot nykyisessä tietokannassasi, jolloin kaikki määritetyn skeeman taulukot saadaan:

SELECT * FROM information_schema.tables WHERE table_type = "BASE TABLE" AND table_schema = "public" ORDER BY table_type, table_name 

Tämä saa sinut luettelo kaikista pysyvistä taulukoista (yleensä etsimäsi taulukot). Voit saada vain taulukoiden nimet, jos muutat * -merkkimerkiksi vain table_name. Julkinen table_schema on useimpien tietokantojen oletusmalli, ellei järjestelmänvalvoja ole asettanut uutta mallia.

Kommentit

  • Vaikka tämä onkin totta, tämä osoitetaan eri asiakkaalle kuin OP kysyi.
  • Tämä toimi minulle hyvin, ja vaikka käyttötapaukseni ei ollut täsmälleen sama kuin OP pyysi, se auttoi minua saamaan pöydäluettelon ollessani yhteydessä kääreen ( Julialangissa LibPQ.jl )

Vastaa

On mahdollista, että olet lisännyt taulukot skeema, joka ei ole hakupolulla, tai oletus, ts. julkinen, joten taulukot eivät näy \ dt: llä. Jos käytät mallia, jota kutsutaan esimerkiksi dataksi, voit korjata ongelman suorittamalla

alter database <databasename> set search_path=data, public;

Poistu ja kirjoita psql uudelleen ja nyt \ dt näyttää myös taulukot kaaviotiedoissa.

Kommentit

  • No, yksinkertainen set search_path=data, public; tekisi myös tempun 🙂
  • @dezso, tekeekö se muutoksen pysyvästi vai vain siinä psql-istunnossa?
  • Virhe, en ollut kovin selvä. Se oli tarkoitettu uloskirjautumis-kirjautumisjakson sijaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *