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

SQL*Plus 純數據導出到文本文件完整實戰指南

     編輯:MySQL 資料庫相關知識

需要用 SQL*Plus 將查詢結果以純數據形式(無標題、無頁腳、無回饋)導出到 CSV 或文本文件?本文提供一份經過驗證的完整腳本模板,並逐行解釋關鍵設置參數的作用。

完整腳本模板(另存為 create_csv.sql)

-- 每行最大字符數(上限 999)
SET LINESIZE 800

-- 頁大小設為 0,抑制分頁、標題、底標題、空行
SET PAGESIZE 0

-- 列格式按需設置(示例)
-- COL username FORMAT A4
-- COL a FORMAT 999,999,999

-- 關閉列標題顯示
SET HEADING OFF

-- 關閉「N rows selected」等回饋信息
SET FEEDBACK OFF

-- 關閉命令回顯
SET ECHO OFF

-- 關閉終端輸出(僅寫入 SPOOL 文件)
SET TERMOUT OFF

-- 去除多餘空格(配合 LINESIZE 過長時)
SET TRIMOUT ON
SET TRIMSPOOL ON

-- 開始導出
SPOOL e:\output\scott_spool_emp.csv

-- 實際查詢:用 || 拼接字段,模擬 CSV 格式
SELECT EMPNO || ',' || ENAME || ',' || JOB || ',' || MGR || ',' || HIREDATE || ',' || SAL FROM EMP;

-- 結束導出
SPOOL OFF

關鍵參數詳解

參數作用建議值
LINESIZE單行最大字符數,防止換行截斷根據最寬行估算,如 800~32000
PAGESIZE每頁行數,0 表示不分頁0
HEADING是否顯示列標題OFF
FEEDBACK是否顯示執行反饋OFF
ECHO腳本命令是否在屏幕回顯OFF
TERMOUT查詢結果是否輸出到終端OFF
TRIMOUT / TRIMSPOOL去除行尾空格ON

進階技巧

  • 動態文件名:可結合 _DATE、_USER 等變量生成帶時間戳的文件名。
  • 真正的 CSV 轉義:字段含逗號、引號、換行時,需用 REPLACE 雙引號並包裹雙引號,或改用 Python/csvkit 等工具後處理。
  • 大數據量分批:配合 SET ARRAYSIZE、SET LONG 優化網絡傳輸。

常見問題排查

  • 文件為空 → 確認 SPOOL 路徑寫權限、查詢是否真有結果。
  • 出現多餘空行 → 檢查 PAGESIZE 0、TRIMSPOOL ON 是否生效。
  • 中文亂碼 → 確保客戶端 NLS_LANG 與數據庫字符集一致(如 AMERICAN_AMERICA.ZHS16GBK 或 AL32UTF8)。

掌握這套標準化腳本,即可在任何 Oracle 環境下快速、乾淨地導出純數據文件,滿足 ETL、報表、歸檔等場景需求。

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