我有一个(至少我这么认为)简单的任务:按列名、数据类型和长度比较 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对我也不是很有帮助,到目前为止的反复试验导致获得所有对象或根本没有。
目前我正在考虑执行 describe
通过 sqlplus
通过 perl 系统调用并解析输出......但必须有更好的方法。
编辑:
View user_tab_columns
如果检查正确的列(请参阅下面的评论),则按预期工作。
最佳答案
您可能没有发现 DBD::Oracle 文档特别有用,但您是否考虑过使用源代码?
这是table_info()的来源和 column_info() .这两个子例程似乎主要用于构建 SQL 语句。
关于oracle - perls dbi :Oracle table_info/column_info get their information from? 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068786/