我看到可以在 psql 中使用以下命令将所有 表 转换为不区分大小写的名称:
\o /tmp/go_to_lower
select 'ALTER TABLE '||'"'||tablename||'"'||' RENAME TO ' ||
lower(tablename)||';' from pg_tables where schemaname = 'public';
psql -U username database < /tmp/go_to_lower
我一直无法找到一条命令,以相同的方式将所有列 转换为不区分大小写。如何实现?
编辑:显然上面的代码只将表名转换为小写。我知道这段代码 ALTER TABLE "YourTableName"RENAME TO YourTableName;将转换为不区分大小写的表名。有没有办法对列名的质量执行类似的功能?
最佳答案
按照原来的思路,那么,你应该可以做到以下几点。这将重命名所有不是小写的列,方法是从 information_schema 中提取它们,为更改生成 SQL,将其存储到文件中,然后再次执行 SQL。
\t on
select 'ALTER TABLE '||'"'||table_name||'"'||' RENAME COLUMN '||'"'||column_name||'"'||' TO ' || lower(column_name)||';'
from information_schema.columns
where table_schema = 'public' and lower(column_name) != column_name
\g /tmp/go_to_lower
\i /tmp/go_to_lower
关于postgresql - 如何将数据库中的所有列转换为不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10086532/