Oracle 中的注释 同步到Mysql

Oracle 中的注释 同步到Mysql

技术教程gslnedu2025-01-05 15:36:2012A+A-

近期接到了一项工作,就是将Oracle中的数据库注释同步到Mysql。当然这个前提是他们的表结构需要一致。关于这项工作网上有很多的工具。这里主要给大家分享的是如何生成SQL句,这种场景我们经常会使用。

我用的大体思路是:

  1. 导出Oracle的表结构导出Excel。具体的内容可以查看以前的文章Oracle 查询表、表注释、字段、字段类型及注释
  2. 将Excel导入到Mysql数据库之中
  3. 通过查询Mysql表结构以及导入来的新表进行联合查询。生成SQL语句
  4. 将生成的SQL语句进行执行。

导出表Excel

SELECT 
USER_TAB_COMMENTS.TABLE_NAME AS  表名,
USER_TAB_COMMENTS.COMMENTS AS 表注释,
USER_TAB_COLUMNS.COLUMN_NAME AS 字段名称,
USER_COL_COMMENTS.COMMENTS AS 字段注释,
USER_TAB_COLUMNS.DATA_TYPE AS 数据类型,
USER_TAB_COLUMNS.DATA_LENGTH AS 长度,
USER_TAB_COLUMNS.DATA_PRECISION AS 精度, 
USER_TAB_COLUMNS.DATA_SCALE AS 小数点后位数,
USER_TAB_COLUMNS.NULLABLE AS 是否允许为空,
USER_TAB_COLUMNS.DEFAULT_LENGTH AS 默认值
FROM USER_TAB_COMMENTS
LEFT JOIN USER_TAB_COLUMNS ON USER_TAB_COLUMNS.TABLE_NAME=USER_TAB_COMMENTS.TABLE_NAME
LEFT JOIN USER_COL_COMMENTS on USER_COL_COMMENTS.TABLE_NAME=USER_TAB_COMMENTS.TABLE_NAME and USER_COL_COMMENTS.COLUMN_NAME=USER_TAB_COLUMNS.COLUMN_NAME
WHERE USER_TAB_COMMENTS.TABLE_NAME in('PISTAFF')
ORDER BY USER_TAB_COMMENTS.TABLE_NAME,USER_TAB_COLUMNS.COLUMN_NAME

将Excel导入Mysql之中

生成SQL语句

下边这块的代码是会根据表信息生成alert table filed的完整语句。平时要做其它的也会用得到

SELECT     
concat(    
    'alter table ',     
    table_schema, '.', table_name,     
    ' modify column ', column_name, ' ', column_type, ' ',     
    if(is_nullable = 'YES', ' ', 'not null '),     
    if(column_default IS NULL, '',     
        if(    
            data_type IN ('char', 'varchar')     
            OR     
            data_type IN ('date', 'datetime', 'timestamp') AND column_default != 'CURRENT_TIMESTAMP',     
            concat(' default ''', column_default,''''),     
            concat(' default ', column_default)    
        )    
    ),     
    if(extra is null or extra='','',concat(' ',extra)),  
    ' comment ''', column_comment, ''';'    
) s    
FROM information_schema.columns    
WHERE table_schema = 'col_test'  --   col_test 为测试的数据库名称
    AND   table_name = 'test_columns'  -- test_columns 为 测试的表名称

这段是关键您需要结构Mysql的表结构与导入的表信息共同进行查询

执行导入的SQL语句

在这里就不在进行赘述了。简单来说只需要将生成的SQL进行复制并且进行执行。

如果您觉得有用就快收藏吧

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8