首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 2005 遷移 Oracle 11g 實戰:匯出精靈、資料類型映射與常見坑點

     編輯:Oracle 資料庫相關知識

使用 SQL Server 內建「匯出資料」精靈 (OLE DB Provider) 將資料遷移至 Oracle 11g,關鍵在於**資料類型正確映射**、**目標表結構預建或精靈自建**、以及處理 datetime → date 等轉換警告。本文提供完整操作步驟圖解與類型對照表。

一、操作流程圖解

  1. 來源選擇:右鍵資料庫 → 任務 → 匯出資料 → 選擇 .Net Framework Data Provider for OLE DB / SQL Server Native Client。
  2. 目標選擇:選擇 Oracle Provider for OLE DB (需安裝 Oracle Client),填入 Server (TNS 別名)、User ID、Password。
  3. 指定表複製:勾選來源表,精靈自動建立目標表 (可預覽 DDL)。
  4. 編輯欄位映射 (關鍵):精靈預設類型映射常不準確,需手動調整。
  5. 執行封裝:可選「立即執行」或「儲存為 SSIS 封裝」排程執行。

來源選擇 目標 Oracle 選擇 目標表建立 欄位類型編輯 SQL 編輯 警告處理 完成執行 Oracle EM 驗證

二、SQL Server → Oracle 資料類型映射對照表 (核心調整項)

SQL ServerOracle 建議備註
intNUMBER(10)精度 10 足夠
bigintNUMBER(19)
bitNUMBER(1) 或 CHAR(1) 'Y'/'N'Oracle 無 Boolean
datetime / smalldatetimeDATE 或 TIMESTAMP精靈警告可忽略,Oracle DATE 含時分秒
float / realBINARY_DOUBLE / BINARY_FLOAT10g+ 原生類型
money / smallmoneyNUMBER(19,4) / NUMBER(10,4)固定 4 位小數
nvarchar(n)NVARCHAR2(n) (最佳) 或 VARCHAR2(n*3)精靈常只給 VARCHAR2,建議手改 NVARCHAR2
varchar(n)VARCHAR2(n)
text / ntextCLOB / NCLOB
image / varbinaryBLOB / RAW
uniqueidentifierRAW(16) 或 VARCHAR2(36)存 UUID 字串或二進位
decimal(p,s) / numeric(p,s)NUMBER(p,s)
timestamp (rowversion)RAW(8)非日期時間,勿映射 DATE

三、常見坑點與對策

  • datetime → date 警告:精靈提示可能截斷,實際 Oracle DATE 精度至秒,SQL Server datetime 精度 3.33ms,**資料不會遺失**,可忽略警告或勾選「忽略錯誤/截斷」。
  • nvarchar 映射為 VARCHAR2:會導致中文亂碼。務必手動改為 NVARCHAR2 (需 Oracle 字元集支援 Unicode,如 AL32UTF8)。
  • Identity 欄位:SQL Server IDENTITY → Oracle 需手動建立 SEQUENCE + TRIGGER 或 12c+ IDENTITY COLUMN,精靈不會自動處理。
  • 大量資料效能:精靈預設 Row-by-Row 插入極慢。大表建議:
    • 先 BCP OUT 扁平檔 → SQL*Loader DIRECT=TRUE PARALLEL=TRUE 載入。
    • 或使用 Oracle Data Pump (EXPDP/IMPDP) 配合 DB_LINK 異構查詢 (12c+)。
  • 編碼一致性:SQL Server 通常為 SQL_Latin1_General_CP1_CI_AS,Oracle 設定 NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8,確保中文正確遷移。

四、驗證清單

  • [ ] 筆數核對:SELECT COUNT(*) FROM src_table vs SELECT COUNT(*) FROM tgt_table
  • [ ] 關鍵欄位抽樣比對 (主鍵、金額、日期、中文字段)
  • [ ] 索引、約束、觸發器、Sequence 手動補建
  • [ ] 應用端連線測試 (JDBC/ODBC/OLE DB)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved