…对于所有此类批量管理操作,您可以使用PostgreSQL系统表为您生成查询,而无需手动编写查询
在您的情况下,它将是:
SELECt 'ALTER TABLE ' || tab_name || ' RENAME COLUMN ' || quote_ident(column_name) || ' TO ' || quote_ident( '_1' || column_name) || ';'FROM ( SELECt quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name, column_name FROM information_schema.columns WHERe table_schema = 'schema_name' AND table_name = 'table_name' AND column_name LIKE '_%') sub;
这将为您提供一组字符串,这些字符串是SQL命令,例如:
ALTER TABLE schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";ALTER TABLE schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";...
如果您的表在模式中,则无需使用
table_schemain
WHERe子句
public。
还请记住使用功能
quote_ident()-阅读我的原始答案以获取更多说明。
编辑:
我已经更改了查询,因此现在它可用于名称以下划线开头的所有列
_。因为下划线是SQL模式匹配中的特殊字符,所以我们必须对它进行转义(使用)以准确地找到它。



