最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql/Oracle數(shù)據(jù)庫項目改造適配信創(chuàng)國產(chǎn)數(shù)據(jù)庫的方法詳解

 更新時間:2025年11月18日 11:25:56   作者:28_鬼鬼  
項目里用了MySQL數(shù)據(jù)庫,現(xiàn)在要換成國產(chǎn)信創(chuàng)數(shù)據(jù)庫,很多團(tuán)隊都在頭疼這個問題,這篇文章主要介紹了MySql/Oracle數(shù)據(jù)庫項目改造適配信創(chuàng)國產(chǎn)數(shù)據(jù)庫的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下

一、總體兼容性概覽

數(shù)據(jù)庫兼容模式Oracle 兼容度MySQL 兼容度備注
達(dá)夢 DMOracle 模式 / MySQL 模式★★★★☆(高)★★☆☆☆(低)默認(rèn) Oracle 模式,語法最接近 Oracle
人大金倉 KingbaseESOracle / PostgreSQL 模式★★★★☆★★☆☆☆基于 PostgreSQL,Oracle 模式較成熟
神通 OSCAROracle 模式為主★★★★☆★★☆☆☆宣稱高度兼容 Oracle
華為 GaussDBOracle 模式 / MySQL 模式★★★★★(極高)★★★★☆(高)企業(yè)級,兼容性最好,支持語法轉(zhuǎn)換工具
  • 從 Oracle 遷移 → 優(yōu)先選 GaussDB 或 達(dá)夢
  • 從 MySQL 遷移 → 優(yōu)先選 GaussDB(MySQL 模式)
  • 基于開源生態(tài) → 選 KingbaseES(PostgreSQL 基礎(chǔ))

具體語法差異詳解

數(shù)據(jù)定義語言(DDL)

① 創(chuàng)建表與字段類型

功能OracleMySQL達(dá)夢 DM人大金倉 KingbaseES神通 OSCARGaussDB(Oracle模式)
自增主鍵SEQUENCE + TRIGGERAUTO_INCREMENTIDENTITY(1,1)SERIAL 或 GENERATED BY DEFAULT AS IDENTITYIDENTITY(1,1)GENERATED BY DEFAULT AS IDENTITY 或序列
CLOB 類型CLOBLONGTEXTTEXT 或 CLOBTEXTCLOBCLOB
BLOB 類型BLOBLONGBLOBBLOBBYTEABLOBBLOB
日期類型DATEDATETIMEDATETIMESTAMPDATEDATE
默認(rèn)值當(dāng)前時間SYSDATENOW()SYSDATE 或 CURRENT_TIMESTAMPCURRENT_TIMESTAMPSYSDATESYSDATE
表空間指定TABLESPACE xxx不支持TABLESPACE xxxTABLESPACE xxxTABLESPACE xxxTABLESPACE xxx

?? 注意

  • 達(dá)夢、神通、GaussDB 在 Oracle 模式下支持 VARCHAR2,KingbaseES 不支持(用 VARCHAR)。
  • MySQL 的 ENGINE=InnoDB 在國產(chǎn)庫中無效,需刪除。

數(shù)據(jù)操作語言(DML) & 查詢語法

① 分頁查詢(最常見差異?。?/h4>
數(shù)據(jù)庫分頁語法
OracleSELECT * FROM (SELECT ROWNUM rn, t.* FROM tab t WHERE ROWNUM <= ?) WHERE rn > ?
MySQLLIMIT ? OFFSET ?
達(dá)夢 DMLIMIT ? OFFSET ? 或 ROWNUM(兼容 Oracle)
KingbaseESLIMIT ? OFFSET ? (PostgreSQL 語法)
神通 OSCARLIMIT ? OFFSET ? 或 ROWNUM
GaussDBLIMIT ? OFFSET ? 或 ROWNUM(Oracle 模式)

? 建議:統(tǒng)一使用 LIMIT m OFFSET n,GaussDB/達(dá)夢/神通都支持。若用 MyBatis-Plus,可配置方言自動適配。

② 字符串連接

數(shù)據(jù)庫語法
Oracle`'a'
MySQLCONCAT('a','b')
達(dá)夢`
KingbaseES`
神通`
GaussDB`

③ NVL / IFNULL / COALESCE

數(shù)據(jù)庫NULL 替換函數(shù)
OracleNVL(expr1, expr2)
MySQLIFNULL(expr1, expr2)
達(dá)夢NVL
KingbaseESCOALESCE(推薦)
神通NVL
GaussDBNVL(Oracle 模式)

? 建議統(tǒng)一使用標(biāo)準(zhǔn) COALESCE(expr1, expr2, ...),所有數(shù)據(jù)庫都支持。

函數(shù)差異

① 日期函數(shù)

功能OracleMySQL達(dá)夢KingbaseES神通GaussDB
當(dāng)前日期時間SYSDATENOW()SYSDATECURRENT_TIMESTAMPSYSDATESYSDATE
格式化日期TO_CHAR(date, 'YYYY-MM-DD')DATE_FORMAT(date, '%Y-%m-%d')TO_CHARTO_CHARTO_CHARTO_CHAR
日期加減date + 1DATE_ADD(date, INTERVAL 1 DAY)date + 1date + INTERVAL '1 day'date + 1date + 1

?? KingbaseES 基于 PG,日期運(yùn)算需用 INTERVAL,與其他庫差異較大。

具體語法差異詳解

數(shù)據(jù)定義語言(DDL)

① 創(chuàng)建表與字段類型

功能OracleMySQL達(dá)夢 DM人大金倉 KingbaseES神通 OSCARGaussDB(Oracle模式)
自增主鍵SEQUENCE + TRIGGERAUTO_INCREMENTIDENTITY(1,1)SERIAL 或 GENERATED BY DEFAULT AS IDENTITYIDENTITY(1,1)GENERATED BY DEFAULT AS IDENTITY 或序列
CLOB 類型CLOBLONGTEXTTEXT 或 CLOBTEXTCLOBCLOB
BLOB 類型BLOBLONGBLOBBLOBBYTEABLOBBLOB
日期類型DATEDATETIMEDATETIMESTAMPDATEDATE
默認(rèn)值當(dāng)前時間SYSDATENOW()SYSDATE 或 CURRENT_TIMESTAMPCURRENT_TIMESTAMPSYSDATESYSDATE
表空間指定TABLESPACE xxx不支持TABLESPACE xxxTABLESPACE xxxTABLESPACE xxxTABLESPACE xxx

?? 注意

  • 達(dá)夢、神通、GaussDB 在 Oracle 模式下支持 VARCHAR2,KingbaseES 不支持(用 VARCHAR)。
  • MySQL 的 ENGINE=InnoDB 在國產(chǎn)庫中無效,需刪除。

數(shù)據(jù)操作語言(DML) & 查詢語法

① 分頁查詢(最常見差異?。?/h4>
數(shù)據(jù)庫分頁語法
OracleSELECT * FROM (SELECT ROWNUM rn, t.* FROM tab t WHERE ROWNUM <= ?) WHERE rn > ?
MySQLLIMIT ? OFFSET ?
達(dá)夢 DMLIMIT ? OFFSET ? 或 ROWNUM(兼容 Oracle)
KingbaseESLIMIT ? OFFSET ? (PostgreSQL 語法)
神通 OSCARLIMIT ? OFFSET ? 或 ROWNUM
GaussDBLIMIT ? OFFSET ? 或 ROWNUM(Oracle 模式)

? 建議:統(tǒng)一使用 LIMIT m OFFSET n,GaussDB/達(dá)夢/神通都支持。若用 MyBatis-Plus,可配置方言自動適配。

② 字符串連接

數(shù)據(jù)庫語法
Oracle`'a'
MySQLCONCAT('a','b')
達(dá)夢`
KingbaseES`
神通`
GaussDB`

③ NVL / IFNULL / COALESCE

數(shù)據(jù)庫NULL 替換函數(shù)
OracleNVL(expr1, expr2)
MySQLIFNULL(expr1, expr2)
達(dá)夢NVL
KingbaseESCOALESCE(推薦)
神通NVL
GaussDBNVL(Oracle 模式)

? 建議統(tǒng)一使用標(biāo)準(zhǔn) COALESCE(expr1, expr2, ...),所有數(shù)據(jù)庫都支持。

函數(shù)差異

① 日期函數(shù)

功能OracleMySQL達(dá)夢KingbaseES神通GaussDB
當(dāng)前日期時間SYSDATENOW()SYSDATECURRENT_TIMESTAMPSYSDATESYSDATE
格式化日期TO_CHAR(date, 'YYYY-MM-DD')DATE_FORMAT(date, '%Y-%m-%d')TO_CHARTO_CHARTO_CHARTO_CHAR
日期加減date + 1DATE_ADD(date, INTERVAL 1 DAY)date + 1date + INTERVAL '1 day'date + 1date + 1

?? KingbaseES 基于 PG,日期運(yùn)算需用 INTERVAL,與其他庫差異較大。

系統(tǒng)視圖 & 元數(shù)據(jù)查詢

查詢表結(jié)構(gòu):

數(shù)據(jù)庫查詢表字段語句(示例)
OracleSELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'XXX'
MySQLDESC table_name 或 SHOW COLUMNS FROM table_name
達(dá)夢SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'XXX'(兼容 Oracle)
KingbaseESSELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xxx'(PG 風(fēng)格)
神通SELECT * FROM SYS.SYSTABLES t, SYS.SYSCOLUMNS c WHERE ...(私有視圖,文檔較少)
GaussDBSELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'XXX'(Oracle 模式)

? 建議

  • Oracle/達(dá)夢/GaussDB 可共用一套元數(shù)據(jù)查詢語句。
  • KingbaseES 使用標(biāo)準(zhǔn) INFORMATION_SCHEMA。
  • 神通需查閱私有字典表,遷移成本高。

特殊語法/限制

① 達(dá)夢(DM)

  • 默認(rèn)不區(qū)分大小寫(可配置),對象名大寫存儲。
  • 支持 DUAL 表(兼容 Oracle)。
  • 分頁推薦 LIMIT m OFFSET n。
  • 不支持 CREATE OR REPLACE VIEW,需先 DROP。

② 人大金倉(KingbaseES)

  • 基于 PostgreSQL,大小寫敏感,對象名小寫存儲(除非雙引號)。
  • 不支持 VARCHAR2,用 VARCHAR。
  • 支持窗口函數(shù)、CTE,功能強(qiáng)大。
  • 序列使用 nextval('seq_name')。

③ 神通(OSCAR)

  • 語法最接近 Oracle。
  • 文檔和工具鏈較弱,社區(qū)支持少。
  • 對 ROWNUM、DUAL、SYSDATE 支持良好。

④ 華為高斯(GaussDB)

  • 支持“Oracle 兼容模式”和“MySQL 兼容模式”,啟動時指定。
  • 提供 SQL翻譯器(SQL Transform Tool),自動轉(zhuǎn)換 Oracle/MySQL 語法。
  • 支持分布式事務(wù)、全局時間戳(適合金融級應(yīng)用)。
  • 企業(yè)級功能最完善,但授權(quán)費用高。

三、遷移建議與工具

通用遷移策略:

  1. SQL 語法標(biāo)準(zhǔn)化

    • 用 COALESCE 代替 NVL/IFNULL
    • 用 LIMIT/OFFSET 代替 ROWNUM
    • 避免使用數(shù)據(jù)庫私有函數(shù)(如 Oracle 的 DECODE → 改用 CASE WHEN
  2. 使用方言插件
    • MyBatis-Plus:內(nèi)置達(dá)夢、人大金倉、GaussDB 方言
    • JPA/Hibernate:配置對應(yīng) Dialect
  3. GaussDB SQL翻譯工具(強(qiáng)烈推薦):

    • 華為提供 GUI 工具,可批量轉(zhuǎn)換 Oracle/MySQL 腳本 → GaussDB
    • 自動處理函數(shù)、分頁、類型等差異

四、總結(jié)對比表(快速查閱)

特性OracleMySQL達(dá)夢人大金倉神通GaussDB
分頁ROWNUMLIMITLIMIT/ROWNUMLIMITLIMIT/ROWNUMLIMIT/ROWNUM
自增主鍵序列+觸發(fā)器AUTO_INCREMENTIDENTITYSERIALIDENTITYIDENTITY/序列
字符串連接||CONCAT||||||||
NULL處理NVLIFNULLNVLCOALESCENVLNVL
日期函數(shù)TO_CHARDATE_FORMATTO_CHARTO_CHARTO_CHARTO_CHAR
元數(shù)據(jù)視圖USER_%INFORMATION_SCHEMAUSER_%INFORMATION_SCHEMASYS.%USER_%
大小寫敏感否(大寫存)是(按創(chuàng)建)否(可配置)是(小寫存)否(可配置)
DUAL表????(需建)??
企業(yè)級支持????????

最佳實踐建議

  1. 新項目選型

    • 金融/電信/政企 → GaussDB
    • 信創(chuàng)替代 Oracle → 達(dá)夢 或 神通
    • 開源生態(tài)/云原生 → 人大金倉
  2. 老系統(tǒng)遷移

    • 從 Oracle → 優(yōu)先 GaussDB(兼容最好),次選達(dá)夢
    • 從 MySQL → 優(yōu)先 GaussDB(MySQL 模式),次選人大金倉
  3. 開發(fā)規(guī)范

    • 避免使用數(shù)據(jù)庫私有語法
    • 使用標(biāo)準(zhǔn) SQL + 多方言適配
    • 抽象 DAO 層,隔離數(shù)據(jù)庫差異
  4. 測試驗證

    • 必須做全量 SQL 回歸測試
    • 驗證分頁、函數(shù)、事務(wù)、性能

總結(jié) 

到此這篇關(guān)于MySql/Oracle數(shù)據(jù)庫項目改造適配信創(chuàng)國產(chǎn)數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)MySql/Oracle改造適配信創(chuàng)國產(chǎn)數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在MySQL中不建議使用長事務(wù)的根因詳析

    在MySQL中不建議使用長事務(wù)的根因詳析

    長事務(wù)顧名思義就是運(yùn)行時間比較長,長時間未提交的事務(wù),也可以稱之為大事務(wù),這類事務(wù)往往會造成大量的阻塞和鎖超時,容易造成主從延遲,要盡量避免使用長事務(wù),這篇文章主要介紹了在MySQL中不建議使用長事務(wù)根因的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • MySQL數(shù)據(jù)庫中Interval關(guān)鍵字的使用看這一篇就夠了

    MySQL數(shù)據(jù)庫中Interval關(guān)鍵字的使用看這一篇就夠了

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫中Interval關(guān)鍵字使用的相關(guān)資料,interval作為一個關(guān)鍵字時,表示為時間間隔,常用在date_add()、date_sub()、subdate(),函數(shù)中,常用于時間的加減法,需要的朋友可以參考下
    2024-08-08
  • mysql臨時表插入數(shù)據(jù)方式

    mysql臨時表插入數(shù)據(jù)方式

    這篇文章主要介紹了mysql臨時表插入數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server解決

    Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?t

    這篇文章主要給大家介紹了關(guān)于Mysql連接本地報錯:1130-host?...?is?not?allowed?to?connect?to?this?MySQL?server的解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 為mysql數(shù)據(jù)庫添加添加事務(wù)處理的方法

    為mysql數(shù)據(jù)庫添加添加事務(wù)處理的方法

    開始首先說明一下,mysql數(shù)據(jù)庫默認(rèn)的數(shù)據(jù)庫引擎是MyISAM,是不支持事務(wù)的,單數(shù)如果你添加了數(shù)據(jù)執(zhí)行語句是不會出錯的,單數(shù)不管用,即便是回滾事務(wù),記錄也是插入進(jìn)去了,所有首先我們要做的第一步是更改數(shù)據(jù)庫引擎
    2011-07-07
  • mysql索引原理與用法實例分析

    mysql索引原理與用法實例分析

    這篇文章主要介紹了mysql索引原理與用法,結(jié)合實例形式分析了mysql索引的基本概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • mysql(5.6及以下)解析json的方法實例詳解

    mysql(5.6及以下)解析json的方法實例詳解

    這篇文章主要介紹了mysql(5.6及以下)解析json的方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • mysql 5.7 的 /etc/my.cnf 參數(shù)介紹

    mysql 5.7 的 /etc/my.cnf 參數(shù)介紹

    這篇文章主要介紹了mysql 5.7 的 /etc/my.cnf 參數(shù)介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • MySQL插入emoji表情失敗問題的解決方法

    MySQL插入emoji表情失敗問題的解決方法

    emoji表情在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,但是最近在mysql中插入emoji表情遇到了問題,通過查找相關(guān)的資料終于解決了,所以將這次解決的過程分享出來,這篇文章主要就給大家介紹了MySQL插入emoji表情失敗問題的解決方法,需要的朋友可以參考。
    2017-05-05
  • MySQL索引操作命令小結(jié)

    MySQL索引操作命令小結(jié)

    這篇文章主要介紹了MySQL索引操作命令小結(jié),本文講解了創(chuàng)建索引、查詢索引、刪除索引等內(nèi)容,需要的朋友可以參考下
    2014-12-12

最新評論

通许县| 前郭尔| 台中县| 驻马店市| 莒南县| 资兴市| 屏南县| 扬中市| 班玛县| 阳春市| 庆安县| 吴忠市| 基隆市| 德保县| 行唐县| 霍邱县| 三河市| 农安县| 盐边县| 深州市| 乐平市| 道孚县| 靖远县| 连云港市| 玉门市| 平武县| 石河子市| 巴彦淖尔市| 宿迁市| 长垣县| 卢湾区| 巩义市| 习水县| 三亚市| 浑源县| 怀远县| 保康县| 永平县| 丹棱县| 曲沃县| 鲁甸县|