我们正在使用 PostgreSQL(我们对此很满意!),但由于客户政策,我们需要在 Oracle 上运行我们的应用程序。不幸的是,我们的 ERD 充满了长度超过 30 个字符的标识符(列名和关系名)(甚至 21 世纪的 Oracle 11g 仍然无法消化,ORA-00972!)。
你知道有什么工具可以帮助自动重命名长名称吗?
例如 my_very_long_rel_from_table1_to_table2 到 rel_0123
或任何其他智能食谱? (不,我们不会重命名 50 多个表中的所有内容)
https://stackoverflow.com/questions/194945/migrating-from-postgresql-to-oracle 上的类似主题
感谢任何想法或反馈
斯文
最佳答案
卓越。然后是 sed
。
列出来自 Postgres 的模式中的所有标识符(例如来自 information_schema)。粘贴到 A 列中的 Excel。复制到 B 列。创建一个 C 列,它将在 B 中显示标识符名称长度。按 C 排序。手动缩短 B 中长度超过 30 的标识符,直到没有(我建议不要这样做自动,因为它会使您的数据库混淆)。创建列 D,其中 D1 为:concatenate("sed 's/",A1,"/",B1,"/g'")。
将 D 列复制到文件“change_columns.sh”。通过它过滤 Postgres 架构。通过它过滤您的客户端程序源。
引入关系名称不超过 30 个字符的政策。例如,每天检查 cron 中的架构来强制执行它。
丑得要命。
关于oracle - PostgreSQL 到 Oracle DDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749312/