PostgreSQL小写表名

PostgreSQL小写表名,postgresql,Postgresql,在阅读并运行一个简单的查询以使所有列名都小写之后,我尝试复制它以使所有表名都小写 UPDATE pg_attribute SET tablename=lower(tablename); 不幸的是,虽然命令行PSQL没有抛出任何错误,但数据库表名都没有小写 如何在PostgreSQL中使所有表名都小写 我不需要任何复杂的东西,因为这些表将被删除,因为数据非常混乱,所以只需一个非常简单的查询就可以了。首先,不要这样做 在需要运行的查询中引用表名,然后“MyTableName”将真正成为查询中的“M

在阅读并运行一个简单的查询以使所有列名都小写之后,我尝试复制它以使所有表名都小写

UPDATE pg_attribute SET tablename=lower(tablename);
不幸的是,虽然命令行PSQL没有抛出任何错误,但数据库表名都没有小写

如何在PostgreSQL中使所有表名都小写


我不需要任何复杂的东西,因为这些表将被删除,因为数据非常混乱,所以只需一个非常简单的查询就可以了。

首先,不要这样做

在需要运行的查询中引用表名,然后“MyTableName”将真正成为查询中的
“MyTableName”
,而不是在运行查询之前按
MyTableName
=>
MyTableName
的方式折叠成小写

如果您觉得迫切需要这样做,那么您应该从数据库的SQL转储中进行

pg_dump > backup.sql
sed -i s/SomeStuff/somestuff/g backup.sql
# ...etc.
如果您有一个表名列表,请在sed或shell脚本中使用一个大的sed命令列表,这样您就可以进行调整,直到正确为止


这样做不仅更安全,还可以减少疯狂的拔头发。您可能会错误地放大备份数据;没有造成伤害。你不能把数据目录搞砸——因为你再也不会得到一个干净的转储了,而且一开始错误可能并不明显,特别是当涉及存储过程时。

pg\u attribute
存储列名,而不是表名。否,不要直接更新系统目录。真的,真的,不要这样做。你有备份,对吗?(如果你要删除这些表,为什么你要尝试将所有的名称都小写?@CraigRinger这是从MS Access导入的数据,整个内容正在被彻底替换。这些警告在这里并不适用,至少直接适用于我的问题/情况。我可以无休止/快速地重新导入。大多数列和表都将以任何方式重命名,但我需要知道这一点,因为我非常需要自动导入几十个数据库,以便清理并将它们从MS Access迁移到PHP/PostgreSQL。@user312854 Ok,但不要这样做。使用pl/pgsql函数查询目录或信息模式,并运行
executeformat(…)
ddl命令进行更改。我将以任何一种方式执行此操作,并且已经使用了列名。我正在从头开始构建一些东西,可以根据需要重新导入。别跟我打架了,给我一个简单的答案,完全是浪费时间!是的,我这样做,我不是为了维护别人的灾难而得到报酬,我是为了直接替换它。我不会投票否决你,尽管我不会处理额外的导出,因为从MS Access迁移客户端已经够痛苦的了。@MikeSW哦,嘿,所有的数据完整性仍然存在!嘿,如果不是的话,我仍然可以轻松导入数据别误会我,我很欣赏警告的字眼,但仅仅因为我的用户名声不好,并不意味着我是一个不了解利害关系的人。我一直感觉不到这一点,很多年没有在Linux或Windows上运行页面文件了,而且一切都很稳定。您的舒适区越大,越愿意承担合理的风险,就可以依赖的人就越多。@user312854不,说真的,如果您有一个真实的数据模型,它不起作用,会损坏您的数据库,但很可能不是您第一次运行它时能够发现的方式。例如,保存了表名的完整性检查、触发器和存储过程不会通过此方法更改其表名,这意味着它们在下次激活时将失败。毫不奇怪,来自MS Access的db导入根本没有任何完整性检查。问题是,这个页面将永远漂浮,欺骗不懂的Postgres noobs尝试它。@zxq9我正在从PostgreSQL导出数据,并在我查看后重新导入,因为它最初来自MS Access。你不能通过讲述你的生活故事来得到答案,所以,这是集体思维的方式。