时间:2021-07-01 10:21:17 帮助过:54人阅读
执行结果显示的差异信息比较详细。可以依据这个来修改数据库,比较方便。
现在分析下这句sq的语法。
1.将两个数据库oracle叫schema下的所有表结构select出来,即:
- <span style="color: #000000;">所有表结构
- </span><span style="color: #0000ff;">select</span> a.table_name <span style="color: #0000ff;">as</span> 表名1, a.column_name <span style="color: #0000ff;">as</span> 字段名,b.constraint_type <span style="color: #0000ff;">as</span> 主键, a.data_type <span style="color: #0000ff;">as</span> 类型,column_id <span style="color: #0000ff;">as</span> 序号, a.data_length <span style="color: #0000ff;">as</span> 字段长度, a.data_precision <span style="color: #0000ff;">as</span> 精度, a.data_scale <span style="color: #0000ff;">as</span> 小数位, a.nullable <span style="color: #0000ff;">as</span><span style="color: #000000;"> 允许空
- </span><span style="color: #0000ff;">from</span> all_tab_columns a <span style="color: #808080;">left</span> <span style="color: #808080;">join</span> (<span style="color: #0000ff;">select</span> d.constraint_type,e.column_name,e.table_name <span style="color: #0000ff;">from</span><span style="color: #000000;"> all_constraints d,all_cons_columns e
- </span><span style="color: #0000ff;">where</span> d.owner <span style="color: #808080;">=</span> e.owner <span style="color: #808080;">and</span> d.table_name <span style="color: #808080;">=</span> e.table_name <span style="color: #808080;">and</span><span style="color: #000000;">
- d.constraint_name </span><span style="color: #808080;">=</span> e.constraint_name <span style="color: #808080;">and</span> d.constraint_type <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">P</span><span style="color: #ff0000;">‘</span>) b <span style="color: #0000ff;">on</span> a.COLUMN_NAME <span style="color: #808080;">=</span> b.column_name <span style="color: #808080;">and</span> a.TABLE_NAME <span style="color: #808080;">=</span><span style="color: #000000;"> b.table_name
- </span><span style="color: #0000ff;">where</span> a.owner <span style="color: #808080;">=</span> <span style="color: #ff00ff;">upper</span>(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">databaseB</span><span style="color: #ff0000;">‘</span>) <span style="color: #0000ff;">order</span> <span style="color: #0000ff;">by</span> 表名1 <span style="color: #0000ff;">asc</span>
通过上述sql就可以将某个数据库下的表结构select出来,通过left join 关联列的主键。
2. 将要比较的两个库的表结构用full join 关联起来。
3. 同在用case来比较具体不同信息。然后在加上where条件。
综述,比较oracle中,2个数据库的表结构基本就用上述sql比较了,效率有些慢,朋友们有好的建议可以谈谈。谢谢。
菜鸟学sql,Oracle数据库结构比较
标签: