Как выполнить SQL-оператор из командной строки?

Я - давний пользователь GUI, пытающийся переключаться на командную строку, и я не уверен, как выполнить SQL-оператор из командной строки Ubuntu. Я использую пост-ГРЭС. Я могу использовать \c соединяться с базой данных и \d видеть таблицы в нем. Я могу также видеть заголовки с \d dbname (где dbname название базы данных). То, что я не могу сделать, посмотрите фактические данные.

Я попробовал SELECT * FROM dbname; и я получил "синтаксическую ошибку в или рядом dbname". Я Попробовал его без полу двоеточия и просто получил новую командную строку. Как я вижу свои данные?Заранее спасибо.

2
задан 19 July 2018 в 01:37

3 ответа

Можно дать команды от терминала, но можно получить пакет с открытым исходным кодом с заполнением клавишей Tab, цветами, и т.д.:

enter image description here


Используя универсальную программу psql использование:

$ psql mydb

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

В psql Вас встретят следующим сообщением:

Welcome to psql 8.3.23, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

mydb=>

Последняя строка, распечатанная psql, является подсказкой, и это указывает, что psql слушает Вас и что можно ввести SQL-запросы в рабочее пространство, сохраняемое psql. Испытайте эти команды:

mydb=> SELECT version();
                            version
----------------------------------------------------------------
 PostgreSQL 8.3.23 on i586-pc-linux-gnu, compiled by GCC 2.96
(1 row)

mydb=> SELECT current_date;
    date
------------
 2002-08-31
(1 row)

mydb=> SELECT 2 + 2;
 ?column?
----------
        4
(1 row)
0
ответ дан 2 December 2019 в 04:42

Править: Фактической проблемой OP, по-видимому, является имя таблицы, которое полностью состоит из цифр. Согласно SQL-92 имена таблиц стандарта не могут запуститься с цифры, но иначе могут содержать цифры. Для такого случая просто нужно перенести имя в двойные или одинарные кавычки как в SELECT * FROM "12345";

По существу то, в чем Вы нуждаетесь, psql команда - интерпретатор командной строки для Пост-ГРЭС, который прибывает по умолчанию с установкой Пост-ГРЭС на Ubuntu. Выполнение psql -U username databasename позволит Вам соединяться с этим и выполнять SQL-запросы через тот интерпретатор командной строки. Если Вы спрашиваете о выполнении команд в то время как в bash оболочка, необходимо использовать psql команда с -c флаг. Что-то вроде

psql -U username -d database.db -c "SELECT * FROM some_table"

Для многострочных запросов можно использовать heredoc:

$ psql -U admin_serg hello_world <<EOF
> SELECT * FROM foobar;
> EOF                  

 foo |     bar     
-----+-------------
   1 | Hello World
(1 row)

Конечно, если Вы не создали конкретного пользователя с postgres , Вы могли бы хотеть сделать это или просто войти в систему как psql пользователь сначала, sudo su postgres.

Что касается синтаксической ошибки, Вы, вероятно, пытались ввести SQL-запрос непосредственно в командную строку (в Вашем случае, это будет, вероятно, bash оболочка). Это не то, как это работает - bash не понимает SQL, только его собственный синтаксис, следовательно почему psql интерпретатор командной строки существует, точно так же, как для других баз данных (sqlite3 например) или существуют инструменты GUI для этого (как pgAdmin для пост-ГРЭС или sqlitebrowser для sqlite3).

См. также:

1
ответ дан 2 December 2019 в 04:42

Вы получаете то сообщение об ошибке, потому что Вы забыли включать Схему в Вас SELECT * FROM dbname; запрос.

Вы не должны использовать \d, необходимо использовать \dt с названием Схемы (не имя DB). например, \dt "MySchema".*

Вот то, как соединить и видеть Ваш DB, Схемы и Таблицы:

*) Тип "\?" для справки

*) Тип "\conninfo" для наблюдения, какой пользователь Вы соединены как.

*) Тип "\l" для наблюдения списка Баз данных.

enter image description here

*) Подключение к базе данных "\c", например, "\c GeneDB1"

enter image description here

Необходимо видеть ключевое быстрое изменение в новом DB, как так: enter image description here

*) Теперь, когда Вы находитесь в данном DB, Вы хотите знать Схемы для того DB. Лучшая команда, чтобы сделать это - "\dn".

enter image description here

Другие команды, которые также работают (но не как хорошие) являются "выбором schema_name от information_schema.schemata"; и "выбирают nspname из pg_catalog.pg_namespace";:

enter image description here

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

enter image description here

*), Теперь можно сделать запросы. Например:

enter image description here

*), Вот то, на что вышеупомянутый DB, Схема и Таблицы похожи в pgAdmin:

enter image description here

0
ответ дан 2 December 2019 в 04:42

Другие вопросы по тегам:

Похожие вопросы: