Uruchom zapytania PostgreSQL z wiersza poleceń

278

Wstawiłem dane do tabeli ... Chcę teraz zobaczyć całą tabelę z wierszami, kolumnami i danymi. Jak mogę wyświetlić to za pomocą polecenia?

Manu Lakaster
źródło

Odpowiedzi:

475

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

Jeśli psqldopiero zaczynasz korzystać z postgresql i nie wiesz, jak korzystać z narzędzia wiersza poleceń, możesz mieć pewne niejasne zachowania, o których powinieneś wiedzieć, kiedy weźmiesz udział w sesji interaktywnej.

Na przykład zainicjuj sesję interaktywną:

psql -U username mydatabase 
mydatabase=#

W tym momencie możesz wpisać zapytanie bezpośrednio, ale musisz pamiętać, aby zakończyć zapytanie średnikiem;

Na przykład:

mydatabase=# SELECT * FROM mytable;

Jeśli zapomnisz średnika, po naciśnięciu klawisza Enter nie otrzymasz nic w wierszu powrotu, ponieważ psqlzakładasz, że nie zakończyłeś wprowadzania zapytania. Może to prowadzić do wszelkiego rodzaju zamieszania. Na przykład, jeśli ponownie wprowadzisz to samo zapytanie, najprawdopodobniej utworzysz błąd składniowy.

W ramach eksperymentu spróbuj wpisać dowolną ozdobę w wierszu polecenia psql, a następnie naciśnij klawisz Enter. psqlpo cichu dostarczy ci nową linię. Jeśli wpiszesz średnik w tym nowym wierszu, a następnie naciśniesz enter, otrzymasz BŁĄD:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

Ogólna zasada brzmi: jeśli nie otrzymałeś żadnej odpowiedzi, psqlale spodziewałeś się COŚ COŚ, to zapomniałeś średnika;

Dotacja
źródło
4
Ponieważ co najmniej 7.2 (to tak daleko, jak starałem się sprawdzić, może być nawet wcześniej), psql ma opcję --single-line(lub -s), która sprawia, że ​​każde polecenie jest natychmiastowe bez potrzeby dodawania średnika.
Gordon,
3
Spędziłem godzinę debugowania, a problemem był brakujący średnik. DZIĘKUJĘ
Dawson B,
106
SELECT * FROM my_table;

gdzie my_tablejest nazwa twojego stołu.

EDYTOWAĆ:

psql -c "SELECT * FROM my_table"

lub po prostu psqlwpisz swoje zapytania.

Paul Draper
źródło
7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos
3
jak powiedziano, należy zakończyć polecenie średnikiem ; jeśli korzystasz z systemu Windows , po prostu zobacz notws dla użytkowników systemu Windows , po prostu cmd.exe /c chcp 1252po otwarciu monitu konsoli.
D_Guidi
2
dla przyszłych użytkowników, należy dodać -d przed nazwą bazy danych i -c przed zapytaniem: psql -U nazwa użytkownika -d moja baza danych -c 'WYBIERZ * Z mytable'
jmhead
2
nie zadziałało dla mnie. Japsql: FATAL: database "SELECT * FROM tb_name" does not exist
Jaswinder,
Jak wskazał @DrColossos, wydaje się, że konieczne jest stosowanie podwójnych cudzysłowów wokół polecenia przynajmniej w środowisku Windows Cli / Batch.
jewbix.cube
43

Jeśli twoja baza danych jest chroniona hasłem, rozwiązaniem byłoby:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
pyAddict
źródło
3
Nigdy nie wiem, może podać hasło w ten sposób. Jest to bardzo przydatne podczas wykonywania testu. Dzięki
zhihong,
21

Otwórz „SQL Shell (psql)” z poziomu aplikacji (Mac).

wprowadź opis zdjęcia tutaj

Kliknij Enter, aby zobaczyć ustawienia domyślne. Po wyświetleniu monitu wprowadź hasło.

wprowadź opis zdjęcia tutaj

*) Wpisz \?pomoc

*) Wpisz, \conninfoaby zobaczyć, z którym użytkownikiem jesteś połączony.

*) Wpisz, \laby zobaczyć listę baz danych.

wprowadź opis zdjęcia tutaj

*) Połącz się z bazą danych za pomocą \c <Name of DB>, na przykład\c GeneDB1

wprowadź opis zdjęcia tutaj

Powinieneś zobaczyć zmianę klucza na nową DB, tak jak: wprowadź opis zdjęcia tutaj

*) Teraz, gdy jesteś w danej bazie danych, chcesz poznać schematy dla tej bazy danych. Najlepszym poleceniem do tego jest \dn.

wprowadź opis zdjęcia tutaj

Inne polecenia, które również działają (ale nie tak dobrze) to select schema_name from information_schema.schemata;i select nspname from pg_catalog.pg_namespace;:

wprowadź opis zdjęcia tutaj

-) Teraz, gdy masz schematy, chcesz poznać tabele w tych schematach. W tym celu możesz użyć dtpolecenia. Na przykład\dt "GeneSchema1".*

wprowadź opis zdjęcia tutaj

*) Teraz możesz wykonywać zapytania. Na przykład:

wprowadź opis zdjęcia tutaj

*) Oto jak wyglądają powyższe DB, Schemat i Tabele w pgAdmin:

wprowadź opis zdjęcia tutaj

Gen
źródło
3
  1. Otwórz wiersz polecenia i przejdź do katalogu, w którym zainstalowano Postgres. W moim przypadku moja ścieżka Postgres to „D: \ TOOLS \ Postgresql-9.4.1-3”. Następnie przejdź do katalogu bin Postgres. Tak wiersz polecenia pokazuje się jako „D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> ”
  2. Teraz moim celem jest wybranie „UserName” z tabeli użytkowników przy użyciu wartości „UserId”. Zatem zapytanie do bazy danych to „ Select u.” UserName ”od użytkowników u Where u.„ UserId ”= 1 ”.

To samo zapytanie jest napisane jak poniżej dla wiersza polecenia psql postgres.

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d nazwa_bazy_danych -h localhost - t -c "Wybierz u. \" Nazwa_użytkownika \ "od użytkowników u Gdzie u. \" UserId \ "= 1;

KPatel
źródło
3

Nie mam wątpliwości co do odpowiedzi @Grant. Ale czasami napotykam kilka problemów, na przykład jeśli nazwa kolumny jest podobna do dowolnego zarezerwowanego słowa kluczowego postgresql, takiego jak natural, w tym przypadku podobny SQL jest trudny do uruchomienia z wiersza poleceń, ponieważ w polu zapytania będzie potrzebne „\ natural \”. Więc moim podejściem jest zapisanie SQL w osobnym pliku i uruchomienie pliku SQL z wiersza poleceń. Ma to również inną zaletę. Jeśli musisz zmienić zapytanie dla dużego skryptu, nie musisz dotykać pliku skryptu ani polecenia. Zmień tylko plik SQL w ten sposób

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
Diabelski sen
źródło
3

Zauważyłem również, że zapytanie

WYBIERZ * Z tablename;

wyświetla błąd w wierszu polecenia psql i

SELECT * FROM "tablename";

działa dobrze, naprawdę dziwne, więc nie zapomnij o podwójnych cudzysłowach. Zawsze lubiłem bazy danych :-(

Ben
źródło
-8

W przypadku konkretnego typu instrukcji można znaleźć bardziej odpowiednie do użycia Azure Data Studio- do wszystkiego innego zawiera wbudowany wiersz poleceń. Korzystając ze studia, możesz znaleźć instrukcje pisania na klawiaturze i bardziej komfortowe czytanie wyników.

Wykonaj poniższe kroki:

  1. Zainstaluj Azure Data Studio - to międzyplatformowy nowoczesny edytor ukierunkowany na rozwój danych; jest open source i rozszerzalny - dwie rzeczy, na których opiera się sam PostgreSQL;
  2. Zainstaluj rozszerzenie PostgreSQL
  3. Połącz się z lokalnym lub zdalnym serwerem:

    wprowadź opis zdjęcia tutaj

  4. Skoncentruj się na pisaniu i wykonywaniu tylko SQL:

    wprowadź opis zdjęcia tutaj

Istnieje wiele fajnych funkcji, takich jak zapisywanie połączeń, tworzenie grup serwerów, a nawet wbudowany terminal, jeśli wygodniej jest wykonywać jakieś zadania za pośrednictwem psql.

gotqn
źródło