Я - давний пользователь GUI, пытающийся переключаться на командную строку, и я не уверен, как выполнить SQL-оператор из командной строки Ubuntu. Я использую пост-ГРЭС. Я могу использовать \c
соединяться с базой данных и \d
видеть таблицы в нем. Я могу также видеть заголовки с \d dbname
(где dbname
название базы данных). То, что я не могу сделать, посмотрите фактические данные.
Я попробовал SELECT * FROM dbname;
и я получил "синтаксическую ошибку в или рядом dbname". Я Попробовал его без полу двоеточия и просто получил новую командную строку. Как я вижу свои данные?Заранее спасибо.
Можно дать команды от терминала, но можно получить пакет с открытым исходным кодом с заполнением клавишей Tab, цветами, и т.д.:
Используя универсальную программу 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)
Править: Фактической проблемой 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).
См. также:
Вы получаете то сообщение об ошибке, потому что Вы забыли включать Схему в Вас SELECT * FROM dbname;
запрос.
Вы не должны использовать \d, необходимо использовать \dt с названием Схемы (не имя DB). например, \dt "MySchema".*
Вот то, как соединить и видеть Ваш DB, Схемы и Таблицы:
*) Тип "\?" для справки
*) Тип "\conninfo" для наблюдения, какой пользователь Вы соединены как.
*) Тип "\l" для наблюдения списка Баз данных.
*) Подключение к базе данных "\c", например, "\c GeneDB1"
Необходимо видеть ключевое быстрое изменение в новом DB, как так:
*) Теперь, когда Вы находитесь в данном DB, Вы хотите знать Схемы для того DB. Лучшая команда, чтобы сделать это - "\dn".
Другие команды, которые также работают (но не как хорошие) являются "выбором schema_name от information_schema.schemata"; и "выбирают nspname из pg_catalog.pg_namespace";:
-) Теперь, когда у Вас есть Схемы, Вы хотите знать таблицы в тех Схемах. Для этого можно использовать команду "dt". Например, "\dt "GeneSchema1".*"
*), Теперь можно сделать запросы. Например:
*), Вот то, на что вышеупомянутый DB, Схема и Таблицы похожи в pgAdmin: