我有一个(至少我认为是这样)简单的任务:按列名,数据类型和长度比较2个表,以验证它们到目前为止具有相同的结构。它应该在现有的perl脚本中完成,该脚本连接到两个不同的数据库。
首先,我只是查询每个数据库user_tab_columns
并比较结果。现在我发现了user_tab_columns
不活的困难方式,但必须通过分析表(http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4462.htm#REFRN26277)来刷新,我绝对不知道。
describe
得到了实际的表定义,但似乎没有通过perls dbi:Oracle,所以我偶然发现了table_info()
和column_info()
方法。 但是他们从哪里获取信息呢?如果他们只是查询*_tab_columns
,那么他们就没有用了。
我无法进行测试,因为我还没有设法传递正确的参数。 Dbi Documentation表示它是根据数据库驱动程序。 Oracle DBD Documentation对我来说也没有什么帮助,到目前为止,试验和错误导致获得所有对象或根本没有。
目前我正在考虑通过perl系统调用describe
执行sqlplus
并解析输出....但是有是更好的方法。
修改
如果选中正确的列,则视图user_tab_columns
按预期工作(请参阅下面的评论)。
答案 0 :(得分:4)
您可能没有发现DBD :: Oracle文档特别有用,但您是否考虑使用源代码?
以下是table_info()和column_info()的来源。这两个子程序似乎都花在构建SQL语句上。