在postgres中将表列名更改为大写

job*_*i88 8 postgresql postgresql-9.2

我正在使用postgres 9.2.我需要将postgres db中所有表的所有列名更改为UPPER CASE.

有没有办法做到这一点?我需要更改postgres中的任何配置吗?

mvp*_*mvp 33

在我解释如何做之前,我强烈建议不要这样做.

在PostgreSQL中,如果表名或列​​名不加引号,例如:

SELECT Name FROM MyTable WHERE ID = 10
Run Code Online (Sandbox Code Playgroud)

它们实际上首先自动折叠为小写,因此上面的查询与以下内容相同:

SELECT name FROM mytable WHERE id = 10
Run Code Online (Sandbox Code Playgroud)

如果您要将所有名称转换为大写,则此语句将不起作用:

SELECT NAME FROM MYTABLE WHERE ID = 10
Run Code Online (Sandbox Code Playgroud)

您必须在此查询中对每个名称进行双引号才能使其正常工作:

SELECT "NAME" FROM "MYTABLE" WHERE "ID" = 10
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您使用标准的PostgreSQL小写协议,则可以使用任何大小写组合,只要您不引用任何名称,它就会起作用.


现在,如果仍然坚持转换为大写,则可以通过使用将数据库模式转储到文件中来实现pg_dump --schema-only.

完成之后,检查所有CREATE TABLE语句并ALTER TABLE根据此转储构造适当的语句 - 您必须编写一些脚本(Perl或Python)来执行此操作.

或者,您可以阅读INFORMATION_SCHEMA.TABLES和/或INFORMATION_SCHEMA.COLUMNS,还可以构造和执行适当的ALTER TABLE语句.