Выполнять запросы PostgreSQL из командной строки

125

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

Теги:
database

2 ответа

260

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

Если вы новичок в postgresql и не знакомы с использованием инструмента командной строки psql, тогда возникает какое-то запутанное поведение, о котором вам следует знать, когда вы вступили в интерактивный сеанс.

Например, инициируйте интерактивный сеанс:

psql -U username mydatabase 
mydatabase=#

В этот момент вы можете ввести запрос напрямую, но вы должны помнить о завершении запроса точкой с запятой ;

Например:

mydatabase=# SELECT * FROM mytable;

Если вы забудете точку с запятой, тогда, когда вы нажмете enter, вы ничего не получите в своей возвратной строке, потому что psql будет считать, что вы еще не закончили ввод своего запроса. Это может привести ко всем путаницам. Например, если вы повторно вводите тот же запрос, скорее всего, вы создадите синтаксическую ошибку.

В качестве эксперимента попробуйте ввести какой-либо искатель, который вы хотите в командной строке psql, затем нажмите enter. psql будет тихо предоставлять вам новую строку. Если вы вводите точку с запятой на этой новой строке и затем нажмите enter, вы получите сообщение ERROR:

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

Эмпирическое правило: Если вы не получили ответа от psql, но вы ожидали хотя бы ЧТО-ТО, тогда вы забыли точку с запятой ;

  • 3
    Начиная с версии 7.2 (это я проверял, возможно, даже раньше), psql имеет опцию --single-line (или -s ), которая делает каждую команду незамедлительной без добавления точки с запятой.
  • 1
    Я потратил час на отладку, и проблема заключалась в пропущенной точке с запятой. БЛАГОДАРЮ ВАС
28
SELECT * FROM my_table

где my_table - имя вашей таблицы.

EDIT:

psql -c "SELECT * FROM my_table"

или просто psql, а затем введите ваши запросы.

  • 4
    Это ничего не делает .. Я делаю это через терминал ....
  • 3
    psql -U username -c your_database "SELECT * FROM my_table"
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню