Szukam dokładnej informacji w bazie danych, o której nie mam wiedzy.
Jest to produkt innej firmy, wolno reagują na niektóre pytania i wiem, że dane znajdują się w tym db, więc chcę zrobić trochę inżynierii retro.
Biorąc pod uwagę jedną tabelę, czy można mieć listę nazw kolumn dla tej tabeli?
Na przykład w SqlServer możliwe jest zrzucenie tabeli do CREATE
instrukcji wielokrotnego użytku , które tekstowo wypisują wszystkie kolumny, z których składa się tabela.
postgresql
information-schema
catalogs
Stephane Rolland
źródło
źródło
\dt[+] table_name
wpsql
.Odpowiedzi:
Oprócz wiersza poleceń,
\d+ <table_name>
który już znalazłeś, możesz także użyć schematu informacyjnego do wyszukiwania danych w kolumnie, używającinformation_schema.columns
:Uwaga: zgodnie z powyższym przykładem upewnij się, że wartości są zawarte w cudzysłowach.
źródło
\x on
lub,\pset expanded on
aby wyniki zapytania były liniowe (zamiast tabelaryczne), a tym samym łatwiejsze do odczytania stackoverflow.com/a/9605093/513397\d+ public.*
aby uzyskać opis (schemat + indeces / fkeys / triggers) wszystkich twoich tabel i widoków wpublic
schemacie. Używamy go w naszym skrypcie przechwytującym przed zatwierdzeniem, aby śledzić zmiany w bazie danych wprowadzone przez każde zatwierdzenie.Jako uzupełnienie innych odpowiedzi, nawet instrukcja SELECT, która nie zwraca żadnych wierszy, ujawni nazwy kolumn dla ciebie i kodu aplikacji.
Uprawnienia mogą wchodzić w grę z dowolnym z tych podejść.
źródło
Schematu informacja jest powolny i pewny sposób: jest to w dużej mierze ujednolicone i przenośny do innych baz danych, które go obsługują. I będzie działać w głównych wersjach.
Jednak widoki w schemacie informacyjnym często łączą się w wielu tabelach z katalogów systemowych, aby spełniać ściśle znormalizowany format - z których wiele jest w większości przypadków tylko martwym ładunkiem. To spowalnia ich .
Programiści Postgres nie składają obietnic, ale podstawy (takie jak potrzebne tutaj) nie zmienią się w głównych wersjach.
psql
(natywny interfejs wiersza poleceń) ma oczywiście szybki pas i bezpośrednio wysyła zapytania do źródła. Jeśli zacznieszpsql
od parametru-E
,\d
zostanie wyświetlony kod SQL za poleceniami odwrotnego ukośnika . Lub\set ECHO_HIDDEN on
z wiersza polecenia psql. Od tego momentu możesz zbudować odpowiedź na swoje pytanie.Szybciej niż zapytania
information_schema.columns
. SpróbujEXPLAIN ANALYZE
przekonać się sam. Nadal nie ma znaczenia dla jednorazowego wyszukiwania. Ale może mieć znaczenie, jeśli zostanie użyty w zapytaniu / funkcji, która jest powtarzana wiele razy.Istnieją również subtelne różnice w widoczności. Szczegółowe porównanie:
źródło
-E
i pokazujesz ludziom, jak uzyskać sql psql.psql
na PostgreSQL 11+Jeśli szukasz typów kolumn w zapytaniu, możesz użyć
psql
's'\gdesc
źródło
Tylko PostgreSQL
Jest to nieco hokey, ale może być wyzwaniem, jeśli szukasz najkrótszego możliwego SQL:
lub nawet krótszy (zakładając, że w tabeli jest co najmniej jeden wiersz)
Lista zachowuje kolejność. Jeśli nie zależy Ci na zamówieniu i masz
hstore
zainstalowane rozszerzenie, możesz zrobić to jeszcze krócejźródło