首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

SQL Server 與 Oracle 資料類型對照表:異構遷移必備參考

     編輯:Oracle 資料庫基礎

SQL Server 遷移 Oracle 時,資料類型映射是首要挑戰。本文提供雙向對照表,標註精度差異、NOT NULL 限制與特殊處理建議。

類型映射對照表

SQL ServerOracle 對應類型備註
bigintNUMBER(19,0)8 位元組整數
binary(n)RAW(n)固定長度二進制,n ≤ 2000
varbinary(max)BLOB大型二進制
bitNUMBER(1,0) 或 CHAR(1) 'Y'/'N'Oracle 無布林型別
char(n)CHAR(n BYTE) / CHAR(n CHAR)n ≤ 2000
varchar(n)VARCHAR2(n BYTE) / VARCHAR2(n CHAR)n ≤ 4000
varchar(max)CLOB大型字串
nchar(n)NCHAR(n)Unicode 固定長度,n ≤ 1000
nvarchar(n)NVARCHAR2(n)Unicode 變長,n ≤ 2000
nvarchar(max)NCLOBUnicode 大型字串
dateDATE (僅日期部分)SQL Server 2008+ date 僅含日期
datetimeDATE精度至 3.33 ms,Oracle DATE 至秒
datetime2TIMESTAMP(7)納秒精度
datetimeoffsetTIMESTAMP(7) WITH TIME ZONE含時區
smallmoney / moneyNUMBER(19,4)固定 4 位小數
decimal(p,s) / numeric(p,s)NUMBER(p,s)精度完整對應
float / realBINARY_DOUBLE / BINARY_FLOATIEEE 754 雙/單精度
intNUMBER(10,0)4 位元組整數
smallintNUMBER(5,0)2 位元組整數
tinyintNUMBER(3,0)1 位元組無號整數
uniqueidentifierRAW(16) 或 CHAR(36)GUID,建議 RAW(16) 存儲效率高
xmlXMLTYPEOracle 原生 XML 支援
timestamp / rowversionRAW(8) 或 NUMBER版本戳,非日期時間
sql_variant不支援直接映射需拆分為多欄位或存 JSON/CLOB
hierarchyid / geometry / geography不支援直接映射需用 SDO_GEOMETRY 或自定義邏輯

遷移關鍵注意事項

  • 字元語意:Oracle 12c+ 建議用 CHAR(n CHAR) / VARCHAR2(n CHAR) 以字元數定義長度,避免多位元組字元截斷。
  • 日期精度:SQL Server datetime 精度 3.33 ms,Oracle DATE 僅至秒;遷移高精度時間請用 TIMESTAMP(3)。
  • NULL 語意:SQL Server CHAR/VARCHAR 預設 NOT NULL 需顯式指定;Oracle 預設允許 NULL,遷移腳本需補齊 NOT NULL 約束。
  • IDENTITY / SEQUENCE:SQL Server IDENTITY 對應 Oracle 12c GENERATED AS IDENTITY 或傳統 SEQUENCE + TRIGGER。
  • 大物件:VARCHAR(MAX)/VARBINARY(MAX) → CLOB/BLOB,遷移工具需支援 LOB 串流傳輸。

自動化遷移工具建議

  • SQL Developer Migration Workbench:官方免費工具,支援 Schema、資料、預存程序轉換。
  • AWS SCT / Azure DMS:雲端遷移服務,內建類型映射規則可自訂。
  • Flyway / Liquibase:版本控管遷移腳本,手工微調映射細節。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved