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

| SQL Server | Oracle 建議 | 備註 |
|---|---|---|
int | NUMBER(10) | 精度 10 足夠 |
bigint | NUMBER(19) | |
bit | NUMBER(1) 或 CHAR(1) 'Y'/'N' | Oracle 無 Boolean |
datetime / smalldatetime | DATE 或 TIMESTAMP | 精靈警告可忽略,Oracle DATE 含時分秒 |
float / real | BINARY_DOUBLE / BINARY_FLOAT | 10g+ 原生類型 |
money / smallmoney | NUMBER(19,4) / NUMBER(10,4) | 固定 4 位小數 |
nvarchar(n) | NVARCHAR2(n) (最佳) 或 VARCHAR2(n*3) | 精靈常只給 VARCHAR2,建議手改 NVARCHAR2 |
varchar(n) | VARCHAR2(n) | |
text / ntext | CLOB / NCLOB | |
image / varbinary | BLOB / RAW | |
uniqueidentifier | RAW(16) 或 VARCHAR2(36) | 存 UUID 字串或二進位 |
decimal(p,s) / numeric(p,s) | NUMBER(p,s) | |
timestamp (rowversion) | RAW(8) | 非日期時間,勿映射 DATE |
NVARCHAR2 (需 Oracle 字元集支援 Unicode,如 AL32UTF8)。IDENTITY → Oracle 需手動建立 SEQUENCE + TRIGGER 或 12c+ IDENTITY COLUMN,精靈不會自動處理。BCP OUT 扁平檔 → SQL*Loader DIRECT=TRUE PARALLEL=TRUE 載入。Oracle Data Pump (EXPDP/IMPDP) 配合 DB_LINK 異構查詢 (12c+)。SQL_Latin1_General_CP1_CI_AS,Oracle 設定 NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8,確保中文正確遷移。SELECT COUNT(*) FROM src_table vs SELECT COUNT(*) FROM tgt_table