Удаление таблицы pgsql через командную строку

Рейтинг: 3Ответов: 2Опубликовано: 03.08.2023

Я пытаюсь удалить таблицу в pgsql через командную строку, но она не удаляется

testdb=# DROP TABLE publisher
testdb-# \dt+

Схема Имя Тип Владелец Хранение Метод доступа Размер Описание
public publisher таблица postgres постоянное heap 8192 bytes

Но после того как я в интерфейсе pgadmin4 выполняю ту же команду, всё удаляется

testdb-# \dt+
Отношения не найдены.

В чем причина, что я не могу удалить таблицу через командную строку?

Ответы

▲ 0Принят

В терминале linux так:

sudo -iu postgres psql -p <node_port> -c "\c <db_name>; DROP TABLE publisher;"

Смею предположить, что в windows что-то типа:

<postgres_bin_folder>\\psql -iu postgres -p <node_port> -c "\c <db_name>; DROP TABLE publisher;"

Это удалит Вашу таблицу без необходимости ручного входа в psql. Вместо <node_port> введите порт, куда развернули postgres. <db_name> - имя вашей базы данных.

▲ 0

Да в конце не хватало точки с запятой. Когда вы добавляете ; в командной строке, вы, вероятно, сталкиваетесь с ошибкой, потому что символ ; в Windows командной строке используется как разделитель команд, и командная строка пытается выполнить каждую команду по отдельности.

В случае PostgreSQL (и других СУБД) символ ; используется для завершения SQL-запроса. В командной строке psql или других SQL-клиентах, вы должны вводить SQL-запрос целиком и нажимать Enter, чтобы запрос был отправлен на выполнение. SQL-клиент сам поймет, что команда закончилась и выполнит её.