Mysql切换Oracle数据库

xiaoxiao2021-02-28  125

一、Oracle创建数据库:

      1.1建表空间操作:      1.1.1创建表空间:create tablespace test_space datafile 'D://oracle/test.dbf' size 500M autoextends on next 50M maxsize 5000M;      1.1.2删除表空间:drop tablespace test_space including contents and datafiles;      1.1.3查看表空间:select * from dba_tablespaces,dba_data_files;    1.2.操作用户:       1.2.1创建用户:

create user test001 identified by '密码' default tablespace test_space;       1.2.2授权用户:         alter user test001 quota unlimited on test_space;授权用户test001使用test_space表空间         grant create session to test001;授予test001用户创建session的权限,即登录权限         grant unlimited tablespace to test001;授权test001使用表空间的权限       1.2.3查看用户权限:           select * from user_sys_privs;查看当前用户所有权限           select * from user_tab_privs;查看所用用户对表的权限    

二、切换数据库,数据的转移:

   2.1使用sqlDeveloper连接Oracle数据库;    2.2在\sqldeveloper\jlib目录中添加mysql-connector-java-5.1.41-bin.jar包,重启sqlDeveloper即可连接mysql数据库了;    2.3查找到mysql中对应数据库,找到需要转移数据的表,右键即可出现复制到Oracle中,目标连接名称为你所操作的oracle用户所对应的数据库名称。    2.4.查看oracle中对应的表的字段,数据等信息。会出现有某些字段类型不对应的情况。

三、数据库字段类型不对应:

                   3.1修改字段类型不对应的列名(这一列后续会删除,修改后的列名只要能识别即可),执行sql语句:     alter table test_table rename column id to id123;     3.2新增列,列名为字段不对应的列名,字段类型为你所需要的类型,执行sql语句:     alter table test_table add id varchar2(150);     3.3将修改列名后的列数据复制到对应的新增列中,注意复制时数据类型的转换,执行sql语句:    update test_table set id=cast(id123 as carchar2(150));     3.4数据复制完成后,将之前更改了列名的列删除即可,执行SQL语句:     alter table test_table drop column id123;     3.5执行任意sql,检查是否更新正确。

四、 SQL语句的修改:

             4.1自增主键oracle无法自动完成,需要利用序列或者触发器实现主键自增(本人利用sequence序列):     4.1.1查看sequence序列:select  * from dba_sequences where sequence_owner=用户名;         说明:where为查询对应的用户下的所有sequence,不添加where添加查询到的是所有的sequence

                 4.1.2创建sequence序列

   create sequence test_id_seq  increment by 1 start with 100 maxvalue 10000 cycle;

        说明: incremnet by 1 ->主键每次增加1;start with 100->主键从100开始计数;maxvalue 10000->主键最大值为10000(如果不需要可设置为nomaxvalue);cycle->累加循环,主键值到maxvalue后回归到start with设定的值进行循环(可设置为nocycle不循环);      4.1.3修改sequence序列:alter sequence test_id_seq inrement by 3 nomaxvalue nocycle;如果需要修改起始值(start with的值),需要删除掉sequence序列重新创建;      4.1.4 删除sequence序列:drop sequence test_id_seq;    4.2获取自增主键的值:       4.2.1在mysql中使用:           select @@Identity可以直接获取到刚刚插入的主键id,在oracle中无法识别这条sql语句;       4.2.2在oracle中执行:           select test_id_seq.CURRVAL from dual;           select test_id_seq.NEXTVAL from dual;           来获取主键id;         注意:必须执行一次获取.CURRVAL后才可执行.NEXTVAL,否则报错。

转载请注明原文地址: https://www.6miu.com/read-48568.html

最新回复(0)