Запустіть запити PostgreSQL з командного рядка


278

Я вставив дані в таблицю .... Я хочу зараз побачити всю таблицю з рядками та стовпцями та даними. Як я можу відобразити це за допомогою команди?

Відповіді:


475

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

Якщо ви новачок у postgresql та незнайомий з використанням інструменту командного рядка, psqlто ви маєте знати деяку заплутану поведінку, коли ви входите в інтерактивний сеанс.

Наприклад, ініціюйте інтерактивний сеанс:

psql -U username mydatabase 
mydatabase=#

У цей момент ви можете ввести запит безпосередньо, але ви повинні пам’ятати про припинення запиту крапкою з комою;

Наприклад:

mydatabase=# SELECT * FROM mytable;

Якщо ви забудете крапку з комою, то при натисканні клавіші введення ви нічого не отримаєте на зворотному рядку, оскільки psqlбудете припускати, що ви не закінчили вводити запит. Це може призвести до різного роду плутанини. Наприклад, якщо ви повторно введете той самий запит, ви, швидше за все, створите помилку синтаксису.

В якості експерименту спробуйте ввести будь-яку схопку, яку ви хочете, у запиті psql, а потім натисніть клавішу Enter. psqlмовчки надасть вам новий рядок. Якщо ви введете крапку з комою на новому рядку та натисніть клавішу Enter, ви отримаєте ПОМИЛКУ:

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

Головне правило: Якщо ви не отримали відповіді, psqlале ви очікували принаймні ДЕШЕ, то ви забули крапку з комою;


4
Оскільки принаймні 7,2 (це було так далеко, як я намагався перевірити, це може бути навіть раніше), psql мав можливість --single-line(або -s), що робить кожну команду негайною, не потрібно додавати крапку з комою.
Гордон

3
Я витратив годину налагодження, і проблема полягала у відсутності крапки з комою. ДЯКУЄМО
Доусон Б

106
SELECT * FROM my_table;

де my_tableназва вашого столу.

Редагувати:

psql -c "SELECT * FROM my_table"

або просто psqlта введіть ваші запити.


7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos

3
як сказано, ви повинні закінчити свою команду крапкою з комою ; якщо ви перебуваєте в системі Windows, переглядайте новели для користувачів Windows в основному, просто поставте їх cmd.exe /c chcp 1252після відкриття підказки консолі.
D_Guidi

2
для майбутніх користувачів не забудьте додати -d перед назвою вашої бази даних та -c перед запитом: psql -U ім’я користувача -d mydatabase -c 'ВИБІР * ІЗ mytable'
jmhead

2
не працював для мене. Я зробивpsql: FATAL: database "SELECT * FROM tb_name" does not exist
Джасвіндер

Як зазначає @DrColossos, схоже, що подвійні лапки навколо команди потрібні принаймні з середовищ Windows / batch Windows.
jewbix.cube

43

Якщо ваша БД захищена паролем, тоді рішенням було б:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"

3
Ніколи не знаю, чи можна ввести пароль таким чином. Це дуже зручно, коли робите тест. Спасибі
zhihong

21

Відкрийте "SQL Shell (psql)" зі своїх додатків (Mac).

введіть тут опис зображення

Клацніть Enter для налаштувань за замовчуванням. Введіть пароль, коли буде запропоновано.

введіть тут опис зображення

*) Введіть \?довідку

*) Введіть, \conninfoщоб побачити, до якого користувача ви підключені.

*) Введіть, \lщоб побачити список баз даних.

введіть тут опис зображення

*) Підключіться до бази даних \c <Name of DB>, наприклад\c GeneDB1

введіть тут опис зображення

Ви повинні побачити ключову швидку зміну нової БД, наприклад: введіть тут опис зображення

*) Тепер, коли ви перебуваєте в заданій БД, ви хочете знати схеми для цієї БД. Найкраща команда для цього - це \dn.

введіть тут опис зображення

Інші команди , які також працюють (але не так добре) є select schema_name from information_schema.schemata;і select nspname from pg_catalog.pg_namespace;:

введіть тут опис зображення

-) Тепер, коли у вас є схеми, ви хочете знати таблиці в цих схемах. Для цього можна використовувати dtкоманду. Наприклад\dt "GeneSchema1".*

введіть тут опис зображення

*) Тепер ви можете робити свої запити. Наприклад:

введіть тут опис зображення

*) Ось як виглядають вищезгадані БД, схема та таблиці у pgAdmin:

введіть тут опис зображення


3
  1. Відкрийте командний рядок та перейдіть до каталогу, де встановлено Postgres. У моєму випадку мій шлях Postgres - "D: \ TOOLS \ Postgresql-9.4.1-3". Після цього переміщення в каталог бін командного рядка Postgres.So відображається як "D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> "
  2. Тепер моя мета - вибрати "UserName" з таблиці користувачів, використовуючи значення "UserId". Отже, запит до бази даних " Select u." UserName "від користувачів u де u." UserId "= 1 ".

Такий же запит записується, як нижче, для командного рядка psql postgres.

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "Виберіть u. \" UserName \ "від користувачів u де u. \" UserId \ "= 1;


3

Я не сумніваюся у відповіді @Grant. Але я стикаюся з кількома проблемами, наприклад, якщо ім'я стовпця схоже на будь-яке зарезервоване ключове слово postgresql, наприклад, природне, в цьому випадку подібний SQL важко запустити з командного рядка, оскільки в полі запиту буде потрібно "\ natural \". Тож мій підхід полягає в тому, щоб написати SQL в окремий файл і запустити файл SQL з командного рядка. Це має ще одну перевагу. Якщо вам потрібно змінити запит для великого сценарію, вам не потрібно торкатися файлу сценарію чи команди. Змініть лише такий файл SQL, як цей

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql

3

Я також помітив, що запит

ВИБІР * ІМЯ таблиці;

видає помилку в командному рядку psql і

ВИБІР * ВІД "ім'я таблиці";

працює добре, дійсно дивно, тому не забувайте подвійних цитат. Мені завжди подобалися бази даних :-(


-8

Для певного типу операторів ви можете знайти більш підходящий для використання Azure Data Studio- для всього іншого він поставляється із вбудованим командним рядком. Використовуючи студію, ви можете знайти друкувати висловлювання та читати результати більш комфортно.

Виконайте наведені нижче дії:

  1. Install Azure Data Studio - це міжплатформенний сучасний редактор, орієнтований на розробку даних; це відкритий і розширюваний код - дві речі, на яких заснований сам PostgreSQL;
  2. Встановіть розширення PostgreSQL
  3. Підключіться до локального або віддаленого сервера:

    введіть тут опис зображення

  4. Зосередьтеся лише на написанні та виконанні SQL:

    введіть тут опис зображення

Є багато приємних функцій, як збереження з'єднань, створення груп серверів і навіть вбудований термінал, якщо вам зручніше виконувати якесь завдання через psql.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.