zoukankan      html  css  js  c++  java
  • oracle 迁移到 mysql

    1 : 使用 Navicat Premium 12  做迁移 

    安装 Navicat Premium 12  并且可以连接上MySQL 和 oracle

    2: 迁移

     

     

     

     

     3 : 验证    迁移完后主键 外键  索引 总数据条数  应该是没问题的  ,

                   要自己迁移 函数 存储过程 视图  ,更改一部分字段数据类型 , 自己点一遍每张表的数据 看看是否有问题 例如乱码 .....

    1: 查询主键 ---对比查询总条数就可以
    oracle : --更改用户名 ( CHENG ) 就可以
    select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name
    and au.constraint_type = 'P' and au.table_name in(select table_name from all_tables where owner='CHENG ')

    mysql : --更改数据库名 ( qy ) 就可以
    select table_name,column_name from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t
    where t.table_schema ='qy' and CONSTRAINT_NAME ='PRIMARY'

    2: 查询外键 ---对比查询总条数就可以
    oracle : --更改用户名 (CHENG  ) 就可以
    select * from user_constraints c where c.constraint_type = 'R' and c.table_name
    in(select table_name from all_tables where owner='CHENG ')

    mysql : --更改数据库名 ( qy ) 就可以
    select table_name,column_name from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t
    where t.table_schema ='qy' and CONSTRAINT_NAME !='PRIMARY'

    3 : 查询所有的索引
    oracle : --更改用户名 ( CHENG  ) 就可以
    select * from USER_INDEXES where table_name in(select table_name from all_tables where owner='CHENG ')

    mysql : --更改数据库名 ( qy ) 就可以
    select INDEX_NAME,COLUMN_NAME from INFORMATION_SCHEMA.STATISTICS t where t.INDEX_SCHEMA ='qy'

    4: 查询数据总条数
    MySQL : 执行第一个sql 更改数据库名字 , 将第一个sql 结果手动复制到 第二个sql上 查看结果
    select concat(
    'select "',
    TABLE_name,
    '", count(*) z from ',
    TABLE_SCHEMA,
    '.',
    TABLE_name,
    ' union all'
    ) from information_schema.tables
    where TABLE_SCHEMA='testqy'   ----testqy是数据库名字

    select sum(t.z) from ( 将上面结果手动复制到这里进行查询 ) t

    Oracle : 执行第一个sql 更改用户名 , 将第一个sql 结果手动复制到 第二个sql上 查看结果
    select (
    'select ''' ||
    TABLE_NAME ||
    ''', count(*) z from '||
    TABLE_NAME||
    ' union all'
    ) from all_tables where owner='CHENG'   --这里是用户名

    select sum(t.z) from ( 将上面结果手动复制到这里进行查询 ) t


    5: 类型转换 ------转换的类型基本上不会出现问题
    1:  NUMBER ====decimal 类型   

     2:   如果 number 没有定义小数 存储整型的值  转的时候11以下转int  11以上转 bigint     

           例如  number(10)==int(10)  ,number(11)===bigint    ,    当然也可以转为 decimal 类型 ,因为 decimal 类型 的取值区间是 1--65

      如果number 没有定义长度  , 转到MySQL 上是默认转为 decimal(65,30)  ------这里默认转为最大空间的值 , 这里得手动更改下
    3:  VARCHAR2 ----大于255 的转为 txt 类型, 小于255的转为 VARCHAR    ------转为txt 也没问题 txt长度不限制
    4:  BLOB------longblob =====  应该转为blob  , 这里转为 longblob 也没问题,就是存储空间大了些而已
    5: CLOB-------longtext 
    6: char ------char
    7: TIMESTAMP------ datetime

  • 相关阅读:
    论文笔记4
    论文笔记3
    论文笔记2
    论文笔记1
    论文笔记
    AFG与AWG的比较
    Linux下“有线线缆被拔出”问题的解决
    python生成excel格式座位表
    PythonTip--一马当先--bfs
    python pygame--倒计时
  • 原文地址:https://www.cnblogs.com/xueershewang/p/13190640.html
Copyright © 2011-2022 走看看