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 также покажет вам таблицы в данных схемы.
Главное меню » Базы данных » База данных PostgreSQL » Как вывести список баз данных и таблиц PostgreSQL с помощью psql
(3 оценок, среднее: 4,33 из 5)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
-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 утилита командной строки с авто-дополнениям и подсветкой синтаксиса.
Читайте также: