Oracle SQL Developer 3.2
可以使用Oracle SQL Developer进行迁移,感觉这个工具比较专业。
他会把表结构创建好,并导入数据,数据类型自动转换,也可手动指定规则。
MySQL的自增长列,迁移到Oracle后,会建一个序列(sequence),并建一个触发器,模拟自增长。
(后期不想用触发器可以把他禁用或者删除)
(另外还可以选择表--复制到Oracle)
Oracle SQL Developer连接MySQL
http://happyqing.iteye.com/blog/2159705
移植时会按MySQL数据库的名字建个Oracle用户,移植到这个用户下,但这个用户所用的表空间是默认的,
我一般是先把MySQL数据库转储成需要的名字,在Oracle建好用户,指定好相应的表空间,再移植
创建一个MySQL连接
打开连接,选择一个数据库,右键--移植到Oracle
此处连接的用户需要Connect,Resource,Create View权限
名称输入一个名字
选个输出目录,里边会有日志和执行过的sql文件(移植后需要分析)
移植成功后,在Oracle SQL Developer里查看分析,看有什么问题,
还要分析生成的日志
一个MySQL文件转储为SQL文件1M多,移植需要10分钟左右。
有一些中间表可能是移植时建的,删除
drop table MD_ADDITIONAL_PROPERTIES; drop table MD_APPLICATIONFILES; drop table MD_APPLICATIONS; drop table MD_CATALOGS; drop table MD_COLUMNS; drop table MD_CONNECTIONS; drop table MD_CONSTRAINTS; drop table MD_CONSTRAINT_DETAILS; drop table MD_DERIVATIVES; drop table MD_FILE_ARTIFACTS; drop table MD_GROUPS; drop table MD_GROUP_MEMBERS; drop table MD_GROUP_PRIVILEGES; drop table MD_INDEXES; drop table MD_INDEX_DETAILS; drop table MD_MIGR_DEPENDENCY; drop table MD_MIGR_PARAMETER; drop table MD_MIGR_WEAKDEP; drop table MD_NUMROW$SOURCE; drop table MD_NUMROW$TARGET; drop table MD_OTHER_OBJECTS; drop table MD_PACKAGES; drop table MD_PARTITIONS; drop table MD_PRIVILEGES; drop table MD_PROJECTS; drop table MD_REGISTRY; drop table MD_REPOVERSIONS; drop table MD_SCHEMAS; drop table MD_SEQUENCES; drop table MD_STORED_PROGRAMS; drop table MD_SYNONYMS; drop table MD_TABLES; drop table MD_TABLESPACES; drop table MD_TRIGGERS; drop table MD_USERS; drop table MD_USER_DEFINED_DATA_TYPES; drop table MD_USER_PRIVILEGES; drop table MD_VIEWS; drop table MIGRATION_RESERVED_WORDS; drop table MIGRLOG; drop table MIGR_DATATYPE_TRANSFORM_MAP; drop table MIGR_DATATYPE_TRANSFORM_RULE; drop table MIGR_GENERATION_ORDER; drop table STAGE_MIGRLOG; --清空回收站 --purge recyclebin; drop SEQUENCE DBOBJECTID_SEQUENCE
问题
1.移植工具建的触发器,可能会影响效率,可以禁用或删除
2移植工具建的序列名是 表名+主键列名+SEQ
由于Oracle的命名规范是30个字符,我觉得以上命名方法太长了,好多都被截断了,
我想采用 表名+_S的命名方式。
3.我不想用触发器,让序列的起始值"等于"表中的ID的最大值
后续操作
1.禁用所有触发器
2.删掉所有序列
3.重建序列
批量重建序列
我采用查询出结果集,利用Excel拼接SQL的方式,我觉得这个比写个存储过程简单(明了)
一、查询表名,主键名,主键数据类型
查询出表名,主键名,就可以拼接查询表的主键列的最大值的SQL了
由于是从mysql导过来的,主键都是1个列,自增长的列都是数字型,varchar型的不用建序列
--查询表名,主键名,主键数据类型 select cu.*, (select data_type from user_tab_columns c where c.TABLE_NAME=cu.TABLE_NAME and c.COLUMN_NAME = cu.COLUMN_NAME ) as data_type from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' --and au.table_name = 'TABLE_NAME' order by data_type; --order by cu.table_name;
用PL/SQL执行,结果集 全选 与标题一起复制到excel
相关:
--改触发器的名字 rename ADVISORY_ADVISORY_ID_SEQ to ADVISORY_SEQ --查询用户的序列 select * from user_sequences order by sequence_name; --查询用户的表 select * from user_tables order by table_name; select * from user_cons_columns select * from user_constraints select * from user_tab_columns
二、查询表的主键列的最大值
此处的COLUMN_NAME,TABLE_NAME来自于上一个查询结果
(最大值为什么要加1,是为了查询序列的下一个值正好是最大值的下一个值)
复制到UE,把制表符(不是空格)换成空
select nvl(max( TABLE1_ID),0)+1 as MAX_ID from TABLE1 union all
select nvl(max( TABLE2_ID),0)+1 as MAX_ID from TABLE2 ;
三、新建序列
此处的MAX_ID来自于上一个查询结果
复制到UE,把制表符(不是空格)换成空
create sequence TABLE1_S minvalue 1 nomaxvalue start with 1 increment by 1 cache 20;
create sequence TABLE2_S minvalue 1 nomaxvalue start with 27 increment by 1 cache 20;
参考:
MYSQL数据库迁移到ORACLE数据库
http://blog.csdn.net/wwwzys/article/details/8813503
相关推荐
在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,比如从MySQL迁移到Oracle。这个过程涉及到数据的完整性和一致性,以及业务连续性。以下是对这个主题的详细阐述: 一、为什么要进行MySQL到...
【Oracle到MySQL迁移】在IT行业中,数据库迁移是一项常见的任务,尤其当业务需求与现有数据库系统不匹配时。本文主要探讨了将Oracle数据库环境迁移到MySQL时遇到的问题及解决策略。 1. **大小写敏感性差异**:...
MySQL到Oracle的数据迁移是一项常见的数据库操作,尤其在企业系统升级或整合时。MySQL是一款开源、免费的关系型数据库管理系统,而Oracle则是一款功能强大的商业数据库系统,提供更高级别的性能、安全性和可扩展性。...
在软件开发中,数据库系统的迁移是一项复杂的工作,尤其是在从Oracle这样的高级数据库系统迁移到MySQL时。Oracle MySQL系统移植方案主要关注数据类型、SQL语法和特定功能的转换。 1. **数据类型差异**: - **数值...
Oracle向MySQL迁移是一个复杂的过程,涉及到多个层面的转换和调整。以下是对迁移过程中的主要知识要点的详细说明: 一、表的移植 在迁移过程中,表的结构和数据是最基础的部分。Oracle的表可以被大多数MySQL的图形...
在将Oracle数据库系统移植到MySQL的过程中,主要涉及以下几个关键知识点: 1. **数据类型差异**: Oracle和MySQL的数据类型存在显著差异,这直接影响到数据迁移的顺利进行。例如: - 数值类型:Oracle的`NUMBER`...
您可以学会如何迁移数据库、移植SQL代码、使用Oracle和MySQL数据库以及配置高效率的查询。在这本内容广泛的书籍中,还包括了安全、监控和调试方面的技巧。 《Oracle Database 11g & MySQL 5.6开发手册》特色 理解...
在进行数据库迁移,无论是从MySQL迁移到Oracle,还是反向操作,都需要关注多个关键点以确保数据的完整性和系统的稳定性。以下是对迁移过程中需要注意的知识点的详细解释: 1. **自动增长的数据类型处理**: MySQL...
本实例将深入探讨如何利用SQL Developer进行数据移植,特别是在MySQL到Oracle以及SQL Server到Oracle之间的迁移过程。 一、SQL Developer简介 SQL Developer是一款免费的集成开发环境(IDE),它提供了全面的数据库...
- **自动增长**:Oracle使用序列(Sequences)处理自动增长,MySQL则有自增(AUTO_INCREMENT)属性。 - **主键**:Oracle主键可由多个列组成,MySQL主键通常为单列。 - **单引号处理**:Oracle在SQL语句中需要...
而Hibernate提供了跨数据库的主键生成策略,例如`native`策略,它会根据底层数据库自动选择合适的主键生成方式(如MySQL的自动增长ID或Oracle的序列)。 在JPA中,通过`@GenericGenerator`注解可以定义主键的生成...
数据库打包类通常指的是在软件开发过程中,为了方便管理和迁移数据库,开发者编写的一种工具类或脚本,用于将数据库结构(如表、视图、存储过程等)和数据一起打包成一个可移植的文件。这样的工具在项目部署、备份、...
传统上,各大数据库供应商如Oracle、MySQL、SQL Server、DB2等都提供了自增数字序列的支持,但其实现方式各异。例如,Oracle使用的是`SEQUENCE`对象,而SQL Server则利用`IDENTITY`属性。然而,这些方法往往依赖于...
说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...
在Java的持久化框架Hibernate中,主键生成策略是一个关键的概念,它决定了如何为数据库中的实体对象生成唯一的标识符(主键...在实际开发中,考虑到可移植性、性能和数据安全性,往往需要权衡各种因素来确定最佳方案。
- **sequences**:适用于支持序列的数据库,如Oracle。 #### 常见错误分析 - **错误1**:如果持久化类没有提供默认的无参构造函数,将会引发异常。 - **错误2**:映射文件中指定的主键生成策略与数据库不兼容。 - ...
- **数据备份与移植:** 介绍如何进行数据备份和恢复,以及如何在不同环境中迁移数据。 - **多表连接难题详解:** 解决复杂的多表查询问题,提高查询效率。 - **MySQL数据库的使用:** MySQL是一种流行的开源数据库...
学生信息管理系统通常与数据库紧密相连,如MySQL、Oracle或SQL Server等。在本系统中,我们可能需要设计一个包含学生表、课程表、成绩表等的数据模型,以存储和管理学生的个人信息、选课情况及成绩等。Java通过JDBC...
2. **多数据库支持**: 演说者ORM支持多种数据库引擎,包括MySQL、PostgreSQL、SQLite、Oracle和SQL Server等,这使得你的代码可以在不同的数据库环境中运行,提高了代码的可移植性。 3. **查询构造器**: 提供了强大...