Ubuntu postgresql посмотреть список баз

Обновлено: 03.07.2024

Я пытаюсь изучить администрирование PostgreSQL и начал изучать, как использовать psql инструмент командной строки.

Когда я вхожу в систему psql --username=postgres , как мне перечислить все базы данных и таблицы?

Я попробовал \d , d и , dS+ но ничего не перечислено. Я создал две базы данных и несколько таблиц с помощью pgAdmin III, поэтому я знаю, что они должны быть перечислены.

Если вы хотите получить к нему доступ через командную строку, запустите psql -l

Обратите внимание на следующие команды:

  • \list или \l : список всех баз данных
  • \dt : список всех таблиц в текущей базе данных

Вы никогда не увидите таблицы в других базах данных, эти таблицы не видны. Вы должны подключиться к правильной базе данных, чтобы увидеть ее таблицы (и другие объекты).

Для переключения баз данных:

\connect database_name или же \c database_name

Смотрите руководство о PSQL .

Вы можете использовать \c db_name для подключения к определенной базе данных. \dt не отображает список всех таблиц в текущей базе данных (кажется, исключая те, которые не найдены search_path по крайней мере в 9.2) \dt *. перечислит все таблицы во всех схемах, без необходимости изменять ваш путь поиска. \ l + мой любимый - он также показывает использование диска. В Windows я могу перечислить базы данных с помощью этой команды, psql -U username -l но она не работает с косой версией.

Это списки баз данных:

Это список таблиц в текущей базе данных

Вы правы, но вопрос был о метакомандах psql-tool. \ dt намного проще, чем вводить любой запрос. Я думаю, что это ОТЛИЧНЫЙ ответ, потому что он может быть выполнен из командной строки Linux, в отличие от необходимости быть в интерпретаторе psql, который иногда зависает для меня при использовании ExtraPutty. Также спас мой день. Для моего конкретного случая я добавляю, WHERE table_schema = 'public' потому что хочу удалить только пользовательские таблицы. Если вы запустите psql с флагом -E, он отобразит реальный запрос при использовании мета-команды. Это хороший ответ. Хотя ОП хотел метакоманды, я гуглил это, и это привело меня к этому вопросу.

В Postgresql эти команды терминала выводят список доступных баз данных.

Или команда гласит:

Эти команды выводят это на терминал:

Это доступные базы данных.

В PSQL эти команды выводят список доступных таблиц

Вы должны указать базу данных, прежде чем вы сможете перечислить таблицы в этой базе данных.

Это приведет вас к psql-терминалу:

Используйте команду, \d означающую показать все таблицы, представления и последовательности

Затем, чтобы выйти из терминала psql, введите \q и нажмите ввод. Или Ctrl-D делает то же самое. Это таблицы в этой базе данных.

\ d не просто перечисляет таблицы: \d[S+] list tables, views, and sequences Для меня это «правильный» ответ, потому что он не требует, чтобы вы уже были подключены к существующей базе данных.

\l это также сокращение для \list . Существует довольно много команд слеша, которые вы можете перечислить в psql, используя \? .

Чтобы получить больше информации о базе данных и списке таблиц, вы можете сделать:

\l+ перечислить базы данных

\d+ перечислить все таблицы в текущей схеме search_path в текущей базе данных.

Из pg_Admin вы можете просто запустить следующее в вашей текущей базе данных, и он получит все таблицы для указанной схемы:

Это даст вам список всех постоянных таблиц (как правило, таблиц, которые вы ищете). Вы можете получить только имена таблиц, если измените * подстановочный знак на просто table_name . Общедоступная table_schema является схемой по умолчанию для большинства баз данных, если только администратор не установил новую схему.

Хотя это правда, это относится к другому клиенту, о котором не спрашивал OP. Это отлично сработало для меня, и, хотя мой вариант использования не был тем, о чем просил OP, он помог мне получить список таблиц при подключении через обертку (в Julialang LibPQ.jl )

alter database <databasename> set search_path=data, public;

Выйдите и снова введите psql, и теперь \ dt также покажет вам таблицы в данных схемы.

Favorite

Добавить в избранное

Главное меню » Базы данных » База данных PostgreSQL » Как вывести список баз данных и таблиц PostgreSQL с помощью psql

(3 оценок, среднее: 4,33 из 5)


П ри администрировании серверов баз данных PostgreSQL одной из наиболее распространенных задач, которую вы, вероятно, будете выполнять, является перечисление баз данных и их таблиц.

PostgreSQL поставляется с интерактивным инструментом, psqlкоторый позволяет вам подключаться к серверу и выполнять запросы к нему. При использовании psqlвы также можете воспользоваться его мета-командами. Эти команды полезны для сценариев и администрирования командной строки. Все мета-команды начинаются с обратного слэша без кавычек и также известны как команды обратного слэша.

В этой статье объясняется, как использовать базы данных и таблицы на сервере PostgreSQL psql.

Листинг баз данных

Вы можете подключиться к серверу PostgreSQL, используя psqlкоманду как любой системный пользователь. В зависимости от конфигурации сервера пользователю может потребоваться ввести свой пароль для подключения к терминалу psql. Чтобы получить доступ к терминалу psql от имени пользователя, в который вы вошли, просто введите psql.

Когда пакет PostgreSQL установлен, создается административный пользователь с именем «postgres». По умолчанию этот пользователь может подключиться к локальному серверу PostgreSQL без пароля.

Чтобы получить доступ к psqlтерминалу как пользователь «postgres», запустите:

Команда sudo позволяет запускать команды в качестве другого пользователя.

Из терминала psql выполните мета-команду \l или \list, чтобы вывести список всех баз данных:


Вывод будет включать количество баз данных, имя каждой базы данных, ее владельца, кодирование и привилегии доступа:

Если вы хотите получить информацию о размерах баз данных, табличных пространствах по умолчанию и описаниях, используйте \l+ или \list+. Размер базы данных будет показан, только если текущий пользователь может подключиться к нему.

Чтобы получить список всех баз данных без доступа к оболочке psql, используйте переключатель -c, как показано ниже:


В отличие от мета-команды \l, приведенный выше запрос покажет только имена баз данных:

Таблицы списков

Чтобы получить список всех таблиц конкретной базы данных сначала необходимо подключиться к нему с помощью мета-команды \c или \connect. Пользователь, вошедший в систему как терминал psql, должен иметь возможность подключаться к базе данных.

Например, чтобы подключиться к базе данных с именем «odoo», вы должны набрать:


Как только база данных переключена, используйте мета-команду \dt для вывода списка всех таблиц базы данных:

Вывод будет включать количество таблиц, имя каждой таблицы и ее схему, тип и владельца:


Если база данных пуста, вывод будет выглядеть так:


Для получения информации о размерах таблиц и описаний используйте \dt+.

Заключение

Вы узнали, как составлять список баз данных и таблиц PostgreSQL с помощью команды psql.

Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:

Для установки PostgreSQL сервера:

Проверим, можем ли мы подключиться к базе данных PostgreSQL:

Вывод команды должен быть примерно таким:

PostgreSQL Подключение, Пользователи (Роли) и Базы Данных

Логин в только что установленный postgreSQL сервер нужно производить под именем пользователя postgres:

Для подключения к базе данных PostgreSQL можно использовать команду:

Если такая команда не просит ввести пароль пользователя, то можно еще добавить опцию -W.

После ввода пароля и успешного подключения к базе данных PostgreSQL, можно посылать SQL-запросы и psql-команды.

PostgreSQL создание новой роли и базы данных

Создать новую роль c именем admin (указывайте нужное имя):

Создание новой базы данных:

Дать права роли на базу данных:

Включить удаленный PostgreSQL доступ для пользователей

Нам нужно отредактировать файл /etc/postgresql/<VERSION>/main/pg_hba.conf, задав опцию md5 вместо peer.

<VERSION> может быть 10, 11, 12 и т.д.

После этого сделать restart PostgreSQL:

Полезные команды PostgreSQL

Выйти из клиента PostgreSQL:

\q

Показать список баз данных PostgreSQL:

\l

Показать список таблиц:

\dt

Показать список пользователей (ролей):

\du

Показать структуру таблицы:

Переименовать базу данных:

Удалить базу данных:

Изменить текущую базу данных в PostgreSQL (вы не сможете переименовать или удалить текущую базу данных):

\connect db_name или более короткий alias: \c db_name

Удалить роль (пользователя):

Роль не будет удалена, если у нее есть привелегии - возникнет ошибка ERROR: role cannot be dropped because some objects depend on it .

Нужно удалить привелегии у роли, например если нужно удалить роль admin2, нужно выполнить последовательность комманд с Drop Owned:

Дать права пользователю/роли на логин ( role is not permitted to log in ):

Выбор shema psql в консоли:

Посмотреть список всех схем:

Подключиться к конкретной схеме:

Sequences

Получить имена всех созданных sequences:

Получить последнее значение sequence, которые будет присвоено новой вставляемой в таблицу записи:

Все команды запускаются под пользователем postgres (postgresql-суперпользователь)

psql -l - список баз данных.

psql -d dbname - подключение к БД dbname.

psql -f file.sql - выполнение команд из файла file.sql.

psql -U postgres -d dbname -c "CREATE TABLE test(some_id serial PRIMARY KEY, some_text text);" - выполнение команды в базе dbname.

psql -d dbname -H -c "SELECT * FROM test" -o test.html - вывод результата запроса в html-файл.

Просмотр списка и путей к конфигурационным файлам

Список активных соединений с информацией о: pid процесса, выполняющегося запроса, пользователя, базы данных.

\c dbname - подсоединение к БД dbname.

\l - список баз данных.

\dt - список всех таблиц.

\d table - структура таблицы table.

\du - список всех пользователей и их привилегий.

\dt+ - список всех таблиц с описанием.

\dt *s* - список всех таблиц, содержащих s в имени.

\i FILE - выполнить команды из файла FILE.

\o FILE - сохранить результат запроса в файл FILE.

\a - переключение между режимами вывода: с/без выравнивания.

Бекап и восстановление таблиц

В PostgreSQL есть две утилиты для бекапа pg_dump и pg_dumpall . pg_dump используется для бекапа одной базы, pg_dumpall для бекапа всех баз и сервера в целом (необходимо запускать под postgresql-суперпользователем).

Создание бекапа базы mydb, в сжатом виде

Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД

Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments

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

Создание резервной копии с сжатием в gz

Список наиболее часто используемых опций:

-h host - хост, если не указан то используется localhost или значение из переменной окружения PGHOST.

-p port - порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.

-u - пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.

-a, --data-only - дамп только данных, по-умолчанию сохраняются данные и схема.

-b - включать в дамп большие объекты (blog'и).

-s, --schema-only - дамп только схемы.

-C, --create - добавляет команду для создания БД.

-c - добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).

-O - не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).

-F, --format - выходной формат дампа, custom, tar, или plain text.

-t, --table=TABLE - указываем определенную таблицу для дампа.

-v, --verbose - вывод подробной информации.

-D, --attribute-inserts - дамп используя команду INSERT с списком имен свойств.

Бекап всех баз данных используя команду pg_dumpall .

В PostgreSQL есть две утилиты для восстановления базы из бекапа.

  • psql - восстановление бекапов, которые хранятся в обычном текстовом файле (plain text);
  • pg_restore - восстановление сжатых бекапов (tar);

Восстановление всего бекапа с игнорированием ошибок

Восстановление всего бекапа с остановкой на первой ошибке

Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C ) и восстановить

Восстановление резервной копии БД, сжатой gz

Начиная с версии 9.2 можно восстановить только структуру таблиц с помощью опции --section

Обслуживание таблицы

Перенос директории с данным (data directory)

Узнать текущий путь

Создадим новую директорию, назначим пользователя и инициализируем

Очищение таблицы

Очищение таблицы tablename и обнуление счетчика с ID.

CASCADE нужен на случай если tablename связана с другой таблицей.

Удаление NULL у поля

pgcli утилита командной строки с авто-дополнениям и подсветкой синтаксиса.

Читайте также: