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

Oracle 數據導入實戰:TXT 文件加載、SQL*Loader 控制文件與去重腳本

     編輯:Oracle 資料庫基礎

前言

業務常需將外部文本文件(如導出的手機號清單)批量導入 Oracle 進行分析。本文介紹基於 SQL*Loader 的標準化導入流程:文本預處理 → 控制文件 (.ctl) → Shell 腳本調用 → 臨時表去重 → 業務關聯查詢,並給出 Linux 下導出 Excel 的技巧。

完整導入流程

1. 文本預處理(Windows 端)

  • 源數據通常為 Excel (.xls/.xlsx),提取目標列。
  • 用 Notepad++ 等編輯器粘貼(避免 DOS 換行符 ^M 導致導入失敗)。
  • 刪除末尾空行,另存為 1.txt(UTF-8 或 GBK,與 NLS_LANG 一致)。

2. 上傳至 Linux 腳本目錄

ftp> put 1.txt /home/oracle/scripts/1.txt

3. 控制文件 daoru.ctl

LOAD DATA
INFILE '/home/oracle/scripts/1.txt'
INTO TABLE hh_tmp1
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(PHONE_NO CHAR(11))

假設目標表:CREATE TABLE hh_tmp1 (PHONE_NO CHAR(11));

4. Shell 腳本 daoru.sh(含去重邏輯)

#!/bin/bash
# 執行 SQL*Loader
sqlldr userid=user/pass@sid control=/home/oracle/scripts/daoru.ctl log=/home/oracle/scripts/daoru.log

# 去重:創建唯一索引或 MERGE 去重
sqlplus -s user/pass@sid <

5. 執行與驗證

chmod +x daoru.sh
./daoru.sh

導入完成後,用 PL/SQL Developer 連接同一用戶,關聯業務表提取所需字段(如 PHONE_NO, BELONG_CODE)。

Linux 下導出 Excel 兼容文件

若需將查詢結果生成可在 Windows 打開的 .xls(實為制表符分隔文本):

sqlplus -s user/pass@sid < 1.xls

生成的 1.xls 雙擊即可在 Excel 打開。

關鍵注意事項

  • 字符集一致:文本編碼、NLS_LANG、數據庫字符集三者統一。
  • 換行符:Windows (CRLF) vs Linux (LF),Notepad++ 可轉換;SQL*Loader 通常自動適配 LF。
  • 去重策略:臨時表加唯一索引最簡單;大數據量用 MERGE 或 INSERT ... SELECT DISTINCT。
  • 權限:腳本執行用戶需有 CREATE TABLE/CREATE INDEX 或目標表寫入權限。

總結

「文本預處理 → CTL 定義 → Shell 編排 → 臨時表去重 → 業務關聯」構建了可復用、可監控、可擴展的數據導入管道。掌握 SQL*Loader 核心參數與 Shell 腳本編排,即可應對大多數異構數據入庫場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved