PostgreSQL - 如何重命名 CamelCase 列?

yan*_*han 5 postgresql alter-table

当我尝试像这样重命名 CamelCase 列时:

ALTER TABLE mytable RENAME COLUMN camelCaseColumn TO camel_case_column;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: column "camelcasecolumn" does not exist
Run Code Online (Sandbox Code Playgroud)

用单引号将 CamelCase 列名称括起来,如下所示:

ALTER TABLE mytable RENAME COLUMN 'camelCaseColumn' TO camel_case_column;
Run Code Online (Sandbox Code Playgroud)

给我一个语法错误。

有什么办法可以重命名该列吗?或者我必须创建一个新表并传输数据?

数据库在 Ubuntu 上运行,我使用 Mac OS X ssh 到运行数据库的服务器以发出命令ALTER TABLE。我知道 Mac OS X 不区分大小写,所以这可能是问题的一部分吗?

谢谢!

yan*_*han 5

事实证明,使用双引号是有效的:

ALTER TABLE mytable RENAME COLUMN "camelCaseColumn" TO camel_case_column;
Run Code Online (Sandbox Code Playgroud)

  • 是的,PostgreSQL 根据 SQL 规范要求对不带引号的标识符进行大小写折叠。请参阅文档:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html (3认同)