資料庫遷移,從oracle到mysql的sql修改

2022-05-07 18:27:09 字數 2623 閱讀 5665

1.函式修改

字串轉時間的函式: to_date(#,'yyyy/mm/dd') ===>str_to_date(#,'%y/%m/%d')

時間轉字串的函式: to_char(operate_time,'yyyy-mm-dd hh24:mi:ss')====> date_format(operate_time,'%y-%m-%d %h:%i:%s')

字串連線函式:        '%'||#||'%'  ***** >concat('%',#,'%')

獲取當前時間函式:    sysdate *****====>   now()

2.序列

有些主鍵id使用序列,mysql沒有序列但是有auto_increment欄位

2.1  將字段修改為自增

alter table t_blogroll_info modify id int auto_increment;

插入時: nextval ----》 null

但是有的insert語句,有兩個字段使用了序列, mysql乙個表只能主鍵使用自增,所以考慮模擬序列

2.2 模擬序列

使用表和函式模擬

--新建序列

drop table if exists sequence;

create table sequence (

id int unsigned not null auto_increment,

name varchar(50) not null,

current_value int not null,

increment int not null default 1,

primary key (name)

) engine=innodb;

--當前值

drop function if exists currval;

delimiter $

create function currval (seq_name varchar(50))

returns integer

language sql

deterministic

contains sql

sql security definer

comment ''

begin

declare value integer;

set value = 0;

select current_value into value

from sequence

where name = seq_name;

return value;

end$

delimiter ;

--下個值

drop function if exists nextval;

delimiter $

create function nextval (seq_name varchar(50))

returns integer

language sql

deterministic

contains sql

sql security definer

comment ''

begin

update sequence

set current_value = current_value + increment

where name = seq_name;

return currval(seq_name);

end$

delimiter;

--設定值

drop function if exists setval;

delimiter $

create function setval (seq_name varchar(50), value integer)

returns integer

language sql

deterministic

contains sql

sql security definer

comment ''

begin

update sequence

set current_value = value

where name = seq_name;

return currval(seq_name);

end$

delimiter ;

使用

insert into sequence values ('testseq', 0, 1);

----新增乙個sequence名稱和初始值,以及自增幅度 新增乙個名為testseq 的自增序列

select setval('testseq', 10);

---設定指定sequence的初始值 這裡設定testseq 的初始值為10

select currval('testseq');

--查詢指定sequence的當前值 這裡是獲取testseq當前值

select nextval('testseq');

--查詢指定sequence的下乙個值 這裡是獲取testseq下乙個值

ORACLE資料庫遷移

oracle資料庫遷移過程 劉兵召寫於20081202 14 01 1.新建立兩個oracle使用者,new jbpm和old jbpm劉兵召寫於20081202 14 01 new jbpm 在原有資料庫基礎上更改過的資料庫 表結構發生變化,依然儲存著原來資料庫的一些資料 old jbpm 原有的...

oracle資料庫遷移

一 原始資訊記錄及複製 1.記錄欲遷移庫的sid,是否為歸檔模式 檢視方法 以sys使用者登入sqlplus後執行archive log list,建庫時預設為非歸檔模式 以及如下檔案的存放位置 引數檔案,密碼檔案,控制檔案,日誌檔案,資料檔案引數檔案存放在c oracle product 10.2...

Oracle資料庫遷移

1.登陸sqlplus a.在sqlplus登陸介面的使用者名稱中輸入 nolog,其他不用輸入 b.conn as sysdba2.刪除當前使用者級聯資訊 提示 ora 01940 無法刪除當前連線的使用者 時關閉所有資料庫連線,或者重啟服務列表中的db服務 如果遇到以下問題時 提示 ora 01...