MySQL切换Oracle爬坑记录

863 阅读2分钟

今年Android跨刚学习后台,好多都不懂,很多东西都要学,感觉又找回了刚开始学Android时的激情

java实习生吧,总不能开始就让你重头到尾撸一个项目,所以接手了一个小项目玩玩 这个开始是用MySQL数据库的,都上线了,后来发现数据库配置这块还是MySQL的,本着这个2个数据库之间还挺多差异的, 还是自己链接Oracle测试一番才放心。

坑1、测试Oracle表空间用户的密码忘记了,连不上!,想到用有DBA权限用户SYS登录导出来,重新建一个新的空间表,再导入。 发现Navicat导出的空间名,表名,字段都是带双引号的,到了Oracle里面就不会自动转换大小了,查询语句只能用双引号括起来,但是写的查询语句肯定不能这样。 实测发现PL/SQL导出的不带双引号,字段名小写。

坑2、SQL窗口才能执行SQL语句,别人给的备份文件address.tab(表)、address.trg(触发器)、address_sequence.seq(序列)

坑3、Navicat工具有数据同步,结构同步,把两个相同类型的库可以方便备份导入,试了不行,然用insert语句可以,数据不多就用执行SQL插入。

SQL脚本:

address.tab
create table XYC_ADDRESS
(
  id          NUMBER(11) not null,
  user_id     NVARCHAR2(45) not null,
  user_name   NVARCHAR2(45),
  award_id    NUMBER(11),
  award_name  NVARCHAR2(255),
  record_id   NUMBER(11),
  address     NVARCHAR2(255),
  phone       NVARCHAR2(45),
  create_date DATE,
  update_date DATE
)
;
comment on column XYC_ADDRESS.user_name
  is '用户姓名';
comment on column XYC_ADDRESS.address
  is '收货地址,需要用户手动填写';
comment on column XYC_ADDRESS.phone
  is '手机号码';
alter table XYC_ADDRESS
  add primary key (ID);


address_sequence.seq
create sequence XYC_ADDRESS_SEQUENCE
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;


address.trg
CREATE OR REPLACE TRIGGER "XYC_ADDRESS" BEFORE INSERT ON "CUNJINGUAN"."XYC_ADDRESS" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW WHEN (new.ID is null)
begin    select XYC_ADDRESS_sequence.nextval into:new.ID from dual; end;
/

参考:www.jianshu.com/p/ce3786435…