psql: SELECT * ... крім одного стовпця


10

Я шукаю простий спосіб виділення всіх стовпців, крім одного, в psql.

З psqlЯ маю в виду інтерактивну командний рядок.

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

Моє запитання стосується лише інтерактивного використання psql. Це не дублікат запитань людей, незадоволених стандартом sql і які хочуть виконати щось на кшталт "select * -foo".


3
Вибачте, немає. Ви можете здійснювати запит information_schemaза допомогою функції pl / pgsql, щоб генерувати список досить легко, але таким чином це були б два запити.
Крейг Рінгер

2
Більшість інструментів GUI можуть це зробити. Але якщо ви хочете (або повинні) дотримуватися командного рядка, можливо, це допоможе: github.com/dbcli/pgcli
a_horse_with_no_name

@a_horse_with_no_name Я хотів би прийняти вашу "відповідь". Чи можете ви опублікувати відповідь та пояснити використання інструменту pgcli для вирішення питання.
guettli

крім якого стовпця? останній? Перший? Або випадковий?
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

@jjanes: Я не впевнений, що це може викликати достатньо попиту, щоб переконати розробників основних програм виділити безкоштовний лист qдля виконання завдання. Можливо, загальний варіант для всієї родини \dкоманд показати голий список з’єднаних імен? Як \d- tbl(мнемонічне: протилежне \d+, яке показує більше деталей). Це дозволило б отримати в основному будь-який оголений список об'єктів. Таблиці в схемі: \dt- public.*, функція , що починається з «f_foo»: і \df- f_foo*так далі - або стовпці в таблиці: \d- mytbl. Подібно до того, що lsробить команда оболонки ...
Ервін Брандштеттер

Я дарую тобі щедроту. Але щось вбудоване в psql було б справді приємною особливістю. Дякую Ервін :-)
guettli

0

Я думаю, що я знайшов те, що ви шукаєте, але я сам цього не перевіряв.

Існує програмне забезпечення під назвою SequelPro, яке дозволило б вибирати поля із заданої таблиці, але єдине для MySQL. Будь ласка, читайте знизу десь із середини сторінки:

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

Існує ще одне програмне забезпечення під назвою PSequel, яке працює лише на Mac, і воно стверджує, що воно типу SequelPro, створене для Postgres:

http://www.psequel.com/

Сподіваюсь, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.