zoukankan      html  css  js  c++  java
  • oracle表结构迁移到mysql导表语句

    • 场景:
      oracle数据库表需要向mysql数据库迁移
    • 迁移表结构语句:
    create or replace procedure P_GET_TABLE_MYSQL_DDL(
        vTableName in varchar(36),
        vTableDdl out varchar(300)
    )
    AS
    begin
    with v_base as (
        select TABLE_NAME T_NAME, COMMENTS
        from USER_TAB_COMMENTS
        where TABLE_NAME = vTableName
    ),
         v_columns as (
             select chr(10) || chr(9) || LOWER(utc.COLUMN_NAME) || ' '
                        || CASE
                               WHEN DATA_TYPE = 'DATE' then LOWER(NVL(tm.NEW_TYPE, utc.DATA_TYPE))
                               WHEN DATA_TYPE = 'NUMBER' and DATA_PRECISION > 1
                                   then LOWER(NVL(tm.NEW_TYPE, utc.DATA_TYPE))  ||
                                        '(' || DATA_PRECISION || decode(DATA_SCALE, 0, '', ',' || DATA_SCALE) || ')'
                               WHEN DATA_TYPE = 'NUMBER' and DATA_PRECISION = 1
                                   then 'tinyint(1)'
                               else LOWER(NVL(tm.NEW_TYPE, utc.DATA_TYPE)) || '(' || DATA_LENGTH || ')' end
                        || DECODE(utc.COLUMN_NAME, 'ID', ' primary key', '')
                        || ' comment ''' || comm.COMMENTS || '''' as ddl_column
             from (
                      select *
                      from v_base
                               left join USER_TAB_COLS on TABLE_NAME = v_base.T_NAME
                  ) utc
                      left join (
                 select 'NUMBER' OLD_TYPE, 'DECIMAL' NEW_TYPE
                 from dual
                 union all
                 select 'VARCHAR2' OLD_TYPE, 'varchar'
                 from dual
                 union all
                 select 'NVARCHAR2' OLD_TYPE, 'nvarchar'
                 from dual
             ) tm on tm.OLD_TYPE = utc.DATA_TYPE
                      left join USER_COL_COMMENTS comm
                                on comm.TABLE_NAME = utc.TABLE_NAME and comm.COLUMN_NAME = utc.COLUMN_NAME
             order by COLUMN_ID
         ),
         b_columns as (
             select wm_concat(ddl_column) as ddl_columns
             from v_columns
         )
    select '## 创建表' || LOWER(T_NAME) || chr(10) || 'create table if not exists ' || LOWER(T_NAME) || '('
               || ddl_columns || chr(10) || ') comment ''' || COMMENTS || '''' AS ddlSql into vTableDdl
    from b_columns, v_base;
    end;
    
    
  • 相关阅读:
    操作excel文件的基础工具xlrd/xlwt/xlutils学用
    第12课 OpenGL 显示列表
    第11课 OpenGL 飘动的旗帜
    第10课 OpenGL 3D世界
    第09课 OpenGL 移动图像
    第08课 OpenGL 混合
    第07课 OpenGL 光照和键盘(2)
    第07课 OpenGL 光照和键盘(1)
    第06课 OpenGL 纹理映射
    第05课 OpenGL 3D空间
  • 原文地址:https://www.cnblogs.com/hjm0928/p/15473997.html
Copyright © 2011-2022 走看看