在阅读PostgreSQL 9.3 documentation并运行一个简单的查询以使所有列名称为小写后,我试图复制它以使所有表名全部为小写...
UPDATE pg_attribute SET tablename=lower(tablename);
不幸的是,虽然命令行PSQL没有抛出任何错误,但没有一个数据库表名被改成小写。
如何在PostgreSQL中将所有表名小写?
我不需要任何复杂的东西,因为这些是因为数据混乱所会丢弃的表,所以只是一个简单的简单查询会很棒。
答案 0 :(得分:1)
首先,不要这样做。
在您需要运行的查询中引用表名,然后在查询中"MyTableName"
确实为"MyTableName"
,而不是在查询之前折叠为小写以MyTableName
=>的方式运行mytablename
将是。
如果您觉得迫切需要这样做 - 那么您应该从数据库的SQL转储中执行此操作
pg_dump > backup.sql
sed -i s/SomeStuff/somestuff/g backup.sql
# ...etc.
如果您有一个表名列表,请在sed或shell脚本中使用大量的sed命令列表,这样您就可以调整内容,直到您做对了。
这不仅更安全,而且还可以减少疯狂的头发。你可以错误地炸毁备份数据;没有伤害。你不能搞砸数据目录 - 因为你再也不会得到干净的转储,而且最初可能没有明显的错误,尤其是如果有存储的话涉及的程序。