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

Oracle 資料匯出 Excel 實務:ODBC 連結與 Microsoft Query 步驟詳解

     編輯:Oracle 資料庫基礎

適用場景

需將 Oracle 資料庫即時資料匯入 Excel 進行分析、報表、樞紐分析,且希望後續能一鍵重新整理取得最新資料。

前置條件

  • 安裝 Microsoft Office (含 Excel)
  • Oracle Client 已安裝並配置 tnsnames.ora 服務名稱
  • Windows ODBC 資料來源管理員 (32/64 位元需與 Office 版本一致)

步驟 1:建立系統 ODBC 資料來源 (System DSN)

  1. 控制台 → 系統管理工具 → ODBC 資料來源 (32/64 位元)
  2. 系統 DSN 索引標籤 → 新增
  3. 選擇 Oracle in OraClient11g_home1 (或對應版本) → 完成
  4. 填寫:
    • 資料來源名稱:ORA_EXCEL (自訂)
    • 描述:Oracle to Excel Export
    • 使用者名稱:SCOTT
    • 服務名稱:ORCL (tnsnames.ora 中的別名)
  5. 測試連線 → 確定

步驟 2:Excel 匯入資料 (Microsoft Query)

  1. Excel → 資料 索引標籤 → 取得外部資料 → 從其他來源 → 從 Microsoft Query
  2. 選擇資料來源:ORA_EXCEL → 確定
  3. 輸入密碼 (可勾選儲存密碼,視安全策略)
  4. 查詢精靈:若需自訂 SQL,選 取消 → 檢視 → SQL
  5. 輸入 SQL (範例):
    SELECT A.ITEM_NO, A.ITEM_DESC, A.ITEM_UM,
           A.ITEM_CREATED_BY, A.CREATED_DATE
    FROM   IC_ITEM_MST A
  6. 執行查詢 (工具列 執行 圖示)
  7. 結果視窗 → 檔案 → 將資料傳回 Microsoft Excel
  8. 選擇儲存格起始位置 → 確定

步驟 3:後續重新整理與進階操作

  • 重新整理:右鍵資料區域 → 重新整理,或 資料 索引標籤 → 全部重新整理
  • 修改查詢:右鍵 → 編輯查詢 → 修改 SQL → 傳回
  • 參數化查詢:SQL 中使用 ? 做參數 → 重新整理時提示輸入
  • 樞紐分析表:插入 → 樞紐分析表 → 選擇此資料連結

效能實測參考

環境:Pentium III 933 MHz、256 MB RAM
4,000 筆記錄匯入耗時:**數秒內完成**
大量資料 (10 萬+ 筆) 建議:

  • SQL 加上 /*+ FIRST_ROWS */ 提示
  • 僅選擇必要欄位,避免 SELECT *
  • 考慮分頁或建立 Materialized View 預先聚合

常見問題排查

現象可能原因解決
找不到 Oracle ODBC 驅動未安裝 Oracle Client 或位元數不符安裝 32-bit Client (Office 32-bit) 或 64-bit Client (Office 64-bit)
ORA-12154 TNS 無法解析服務名稱錯誤或 tnsnames.ora 路徑問題用 tnsping 測試、確認 TNS_ADMIN 環境變數
中文顯示亂碼NLS_LANG 設定錯誤登錄表/環境變數設 NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950
查詢逾時資料量大、無索引優化 SQL、增加 Command Timeout (Microsoft Query 選項)

替代方案比較

方案優點缺點
ODBC + Microsoft Query無程式碼、支援重新整理、參數化、樞紐分析需客戶端配置 ODBC、大量資料較慢
SQL*Plus SPOOL CSV伺服器端執行、速度快、自動化腳本友善需手動開啟 CSV、格式固定、無即時連結
PL/SQL + UTL_FILE 產生 CSV/XLSX伺服器端、可排程、可產生真 Excel (POI)需開發維護、權限管控
Oracle REST Data Services (ORDS) + Power Query現代、安全、支援增量重新整理、無驅動需部署 ORDS、學習曲線
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved