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语句.
| 归档时间: |
|
| 查看次数: |
15632 次 |
| 最近记录: |