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

DB2 抑制 SELECT 輸出標題資訊的三種實用方法

     編輯:DB2 教學

問題背景

預設情況下,CLP(Command Line Processor)執行 SELECT 會輸出:

  1. 欄位標題行(如 DEPTNUMB DEPTNAME MANAGER DIVISION LOCATION)
  2. 分隔線(-------- -------------- ------- ---------- -------------)
  3. 資料列
  4. 統計行(8 條記錄已選擇。)

若需僅獲得純淨資料列(如管道傳遞給下游程式、ETL 腳本解析),必須抑制標題與統計資訊。

方法一:-x 選項(最簡單、最常用)

db2 -x "SELECT * FROM org"
  • -x:Suppress column headings and the "rows selected" message.
  • 輸出:純資料列,欄位間以單一空白分隔(可配合 -z 導向檔案)。
  • 適用:快速腳本、單次查詢、管道串接。

方法二:--noheader 參數(CLPPlus / 新版 CLP)

db2 --noheader "SELECT * FROM org"
  • 功能等同 -x,語意更清晰。
  • 支援 --noheader --noalign 進一步抑制對齊空白,產生緊湊輸出。

方法三:導向檔案再後處理(通用備援)

# 導出含標題的完整輸出
db2 "SELECT * FROM org" > with_header.txt

# 去除前 2 行(標題+分隔線)與最後 1 行(統計)
tail -n +3 with_header.txt | head -n -1 > clean_data.txt
  • 適用於舊版 CLP 不支援 -x、或需保留原始輸出備份的場景。
  • Windows PowerShell 寫法:(db2 "SELECT * FROM org") [2..($_.count-2)]。

進階:配合輸出格式化參數

程式化介面(CLI/JDBC/ODBC)原生不輸出標題

若在應用程式中執行查詢,結果集本身不包含標題行,標題僅存在於 ResultSetMetaData 中。因此:

  • JDBC:ResultSet.getMetaData().getColumnName(i) 取得標題,ResultSet.next() 迭代純資料。
  • CLI/ODBC:SQLNumResultCols + SQLDescribeCol 取標題,SQLFetch 取資料。
  • 無需額外抑制參數,直接處理純資料列。

最佳實務建議

  1. 腳本/自動化:首選 db2 -x,簡潔、標準、跨版本相容。
  2. 需 CSV 格式:db2 -x --delimiter , --noalign "SELECT ..." > data.csv。
  3. 複雜格式需求:Export → db2 "EXPORT TO data.del OF DEL MODIFIED BY NOCHARDEL SELECT ...",功能最強、效能最好。
  4. 避免使用 tail/head 後處理,易因版本/語系導致行數偏移。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數效果組合範例
-z filename將輸出(含標題)導向檔案,螢幕仍顯示db2 -x -z data.txt "SELECT * FROM org"
-r filename將報表(含標題)導向檔案,螢幕不顯示db2 -x -r data.txt "SELECT * FROM org"
--noalign移除欄位對齊空白,輸出緊湊db2 -x --noalign "SELECT * FROM org"
--delimiter ,指定欄位分隔符(預設空白)db2 -x --delimiter , "SELECT * FROM org"