psql: SELECT *… кроме одного столбца

10

Я ищу простой способ выбрать все столбцы, кроме одного в psql.

С psqlЯ имею в виду интерактивную командную строку.

Я был бы счастлив с инструментом, который расширяется до *списка цитируемых имен столбцов. Тогда я мог бы удалить столбец, чтобы удалить вручную.

Мой вопрос только об интерактивном использовании PSQL. Это не дубликат вопросов людей, недовольных стандартом sql и желающих выполнить что-то вроде «select * -foo».

guettli
источник
3
Нет, извини. Вы можете сделать запрос information_schemaчерез функцию pl / pgsql, чтобы сгенерировать список довольно легко, но таким образом это будет два запроса.
Крейг Рингер
2
Большинство инструментов GUI могут сделать это. Но если вы хотите (или должны) придерживаться командной строки, возможно, это поможет: github.com/dbcli/pgcli
a_horse_with_no_name
@a_horse_with_no_name Я хотел бы принять ваш "ответ". Не могли бы вы опубликовать ответ и объяснить использование инструмента pgcli для решения вопроса.
Геттли
кроме какого столбца? последний? первый? Или случайный?
BAE
1
@ChengchengPei: нет descкоманды вpsql
a_horse_with_no_name

Ответы:

4

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

SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
FROM   pg_attribute
WHERE  attrelid = 'myschema.mytable'::regclass
AND    NOT attisdropped  -- no dropped (dead) columns
AND    attnum > 0        -- no system columns
AND    attname <> 'bad_column'  -- case sensitive!

Или просто, WHERE attrelid = 'mytable'::regclassесли вы доверяете пути поиска, чтобы найти правильную схему.

quote_ident() добавляет двойные кавычки, где это необходимо.

Я задал тот же вопрос в 2007 году на pgsql-general . Это был Postgres 8.2 тогда. Теплые воспоминания ...

Связанные с:

Эрвин Брандштеттер
источник
1
Это звучит как элемент списка дел, который добавляет команду psql с обратной косой чертой, которая будет выдавать строку, представляющую собой список всех столбцов таблицы, соответствующим образом заключенных в кавычки. И вы могли бы опустить любые столбцы, которые были включены в качестве дополнительных аргументов команды. Так что гипотетически \dq thetable bad_column.
Джанес
@jjanes: Я не уверен, что это может вызвать достаточно требований, чтобы убедить разработчиков ядра выделить бесплатное письмо qдля этой задачи. Может быть, общий вариант для всей семьи \dкоманд, чтобы показать пустой список составных имен? Как \d- tbl(мнемоника: противоположность \d+, которая показывает больше деталей). Это позволило бы получить практически любой пустой список объектов. Таблицы в схеме: \dt- public.*, функция , начинающаяся с «f_foo»: и \df- f_foo*т.д. - или столбцы в таблице: \d- mytbl. Подобно тому, что lsделает команда оболочки ...
Эрвин Брандштеттер
Я даю тебе награду. Но что-то встроенное в psql было бы действительно хорошей функцией. Спасибо Эрвин :-)
Геттли
0

Я думаю, что нашел то, что вы ищете, но я не проверял это сам.

Существует программное обеспечение под названием SequelPro, которое позволит вам выбирать поля из данной таблицы, но только для MySQL. Пожалуйста, прочитайте ниже где-то в середине страницы:

http://www.sequelpro.com/docs/Working_with_Query_Favorites

Есть еще одна программа под названием PSequel, которая работает только на Mac и утверждает, что она имеет тип SequelPro, созданный для Postgres:

http://www.psequel.com/

Надеюсь это поможет.

несвязанный
источник