psql: SELECT * ... 除了一列

gue*_*tli 10 postgresql psql

我寻找一种简单的方法来选择除 psql 中的一列之外的所有列。

随着psql我的意思是交互式命令行。

我会很高兴有一个工具可以扩展到*引用的列名列表。然后我可以移除列以手动移除。

我的问题只是关于 psql 的交互使用。它不是那些对 sql 标准不满意并且想要执行诸如“select *-foo”之类的问题的人的问题的重复。

Erw*_*ter 5

要获取默认顺序的列列表,不包含错误列:

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!
Run Code Online (Sandbox Code Playgroud)

或者只是WHERE attrelid = 'mytable'::regclass如果您信任搜索路径可以解析到正确的架构。

quote_ident()必要时添加双引号。

在 2007 年在 pgsql-general 上问过同样的问题。那时是 Postgres 8.2。甜蜜的回忆 ...

有关的: