Hogyan sorolhatom fel az összes adatbázist és táblázatot a psql használatával?

Megpróbálom megtanulni a PostgreSQL adminisztrációt, és elkezdtem megtanulni a psql parancssori eszköz használatát.

Amikor a psql --username=postgres szolgáltatással jelentkezem be, hogyan sorolhatom fel az összes adatbázist és táblázatot?

Megpróbáltam a következőt: \d, d és dS+, de semmi nincs felsorolva. Két adatbázist és néhány táblázatot hoztam létre a pgAdmin III alkalmazással, így tudom, hogy fel kell venni őket.

Megjegyzések

  • Ha hozzá akarsz férni a parancssoron keresztül futtassa a psql -l
  • Ez a megjegyzés mindenképpen a legfontosabb válaszok közé tartozik! Ha hitelesítésre van szüksége, akkor psql --username=postgres -l.

Válasz

Vegye figyelembe a következő parancsokat:

  • \list vagy \l: az összes adatbázis felsorolása
  • \dt: az aktuális adatbázis összes táblája a search_path
  • : az aktuális adatbázis összes tábláját sorolja fel, függetlenül a search_path

Más adatbázisokban soha nem fog táblázatot látni, ezek a táblák aren nem látható. A táblák (és egyéb objektumok) megtekintéséhez a megfelelő adatbázishoz kell csatlakoznia.

Adatbázisok váltásához:

\connect database_name vagy \c database_name

Lásd a psql útmutatóját.

Megjegyzések

  • A \c db_name segítségével csatlakozhat egy bizonyos adatbázishoz.
  • \dt nem ‘ úgy tűnik, hogy az aktuális adatbázis összes tábláját felsorolja (úgy tűnik, kizárja azokat, amelyek ‘ t nem találhatók a search_path legalább a 9.2-n)
  • \dt *. felsorolja az összes séma összes tábláját, anélkül, hogy módosítania kellene a keresési útvonalat.
  • \ l + is a kedvencem – ez mutatja a lemezhasználatot is.
  • Windows rendszeren fel tudom sorolni az adatbázisokat ezzel a paranccsal psql -U username -l, de nem működik a perjel verzióval.

Válasz

Ez az adatbázisokat sorolja fel:

SELECT datname FROM pg_database WHERE datistemplate = false; 

Ez az aktuális adatbázisban szereplő táblázatokat sorolja fel

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

Megjegyzések

  • Ön ‘ igaza van, de a kérdés a psql-eszköz meta-parancsaira vonatkozott. \ dt sokkal könnyebb, mint bármilyen lekérdezést beírni.
  • Úgy gondolom, hogy ez NAGY válasz, mert Linux parancssorból futtatható, szemben azzal, hogy a psql tolmácsban kell lennie, ami néha a számomra függ ExtraPutty.
  • Megmentette a napomat is. Saját esetemre ‘ m hozzáadom a WHERE table_schema = 'public' -t, mert csak egyéni táblákat szeretnék eldobni.
  • Ha elkezdi A psql az -E zászlóval megjeleníti a valódi lekérdezést, amikor meta-parancsot használ.
  • Igen, szerintem ‘ jó válasz, mivel lehetővé teszi, hogy kontrolláltabban csatlakozzon és lekérdezze az adatbázisokat, különösen akkor, ha egy szkriptet elő akar állítani egy nagy adatbázis-listából. Köszönet.

Válasz

A Postgresql-ben ezek a terminálparancsok felsorolják az elérhető adatbázisokat

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

Vagy a parancs egyszerűbben megfogalmazta:

psql -U pgadmin -l 

Ezek a parancsok ezt kinyomtatják a terminálon:

 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) 

Ezek az elérhető adatbázisok.

A PSQL-ben ezek a parancsok felsorolják a rendelkezésre álló táblázatokat

Adatbázist kell megadnia, mielőtt felsorolhatja az adott tábla tábláit.

el@defiant$ psql -U pgadmin -d kurz_prod 

Ezzel elérheti a psql terminált:

kurz_prod=# 

Használja a \d parancsot, vagyis az összes táblát, nézetet és sorrendet megjeleníti.

kurz_prod=# \d 

Ez kinyomtatja:

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

Ezután a psql terminálból való kilépéshez írja be a \q parancsot, és nyomja meg az Enter billentyűt. Vagy Ctrl-D ugyanezt teszi. Ezek az adatbázisban található táblázatok.

Megjegyzések

  • \ d nem csak táblázatokat sorol fel: \d[S+] list tables, views, and sequences
  • Számomra ez a ” helyes ” válasz, mert nem ‘ t megköveteli, hogy már csatlakozzon egy meglévő adatbázishoz.
  • Egy bélés szkriptekben való használatra (root-ként): su - -c 'psql -U postgres postgres -P pager=off -P tuples_only=on -l' postgres | cut -d'|' -f1 | tr -d '[:blank:]' | grep -vE '$^'

Válasz

\l a . Jó néhány perjelparancs létezik, amelyeket a \? használatával sorolhat fel psql-ben.

Válasz

Ha további információt szeretne kapni az adatbázisról és a táblázatokról, a következőket teheti:

\l+ az adatbázisok felsorolásához

 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) 

és

\d+ az aktuális adatbázis jelenlegi keresési_útvonal-sémájának összes táblájának felsorolásához.

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) 

Válasz

A pg_Admin alkalmazásból egyszerűen futtathatja a következőket az aktuális adatbázisban, és megkapja az összes táblázatot a megadott sémához:

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

Ez megkapja az összes állandó tábla listája (általában azok a táblák, amelyeket keres). Csak a táblák nevét kaphatja meg, ha a * helyettesítő karaktert csak a table_name. A nyilvános table_schema az alapértelmezett séma a legtöbb adatbázis számára, hacsak az adminisztrátor nem állított be új sémát.

Megjegyzések

  • Bár ez igaz, ez egy másik klienst szólít meg mint amire az OP rákérdezett.
  • Ez nagyon jól sikerült számomra, és bár a használati esetem nem pontosan az volt, amit az OP kért, ez segített abban, hogy a táblázatlistát elérhessem, miközben csomagológéppel kapcsolódtam ( Julialang-ban LibPQ.jl )

Válasz

Lehetséges, hogy a táblákat beszúrta egy séma, amely nem szerepel a keresési útvonalon, vagy az alapértelmezett, azaz nyilvános, így a táblázatok nem jelennek meg a \ dt használatával. Ha mondjuk adatnak nevezett sémát használ, akkor ezt a futtatással kijavíthatja.

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

Lépjen ki és adja meg újra a psql fájlt, és most A \ dt a sémaadatokban is megmutatja a táblákat.

Megjegyzések

  • Nos, egy egyszerű set search_path=data, public; megcsinálná a trükköt is 🙂
  • @dezso, ez végleg megváltoztatja a változást, vagy csak abban a psql-munkamenetben?
  • Tévedés, nem voltam túl világos. A kijelentkezés-bejelentkezés ciklus helyett szánták.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük