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

DB2 命令列執行 SQL 並匯出資料的完整操作指南

     編輯:DB2 教學

為什麼在 DB2 CLP 直接貼上多行 SQL 會報錯?

許多開發者在 DB2 Command Line Processor (CLP) 直接貼上換行的 SQL 時,會遇到語法錯誤。原因在於:DB2 CLP 預設以分號 ; 為語句結束符,且不支援隨意換行。若在語句中間按 Enter,CLP 會嘗試執行不完整的片段,導致失敗。

兩種避免報錯的輸入模式

模式一:單行模式 + 反斜線續行

在每行結尾加上 \,告訴 CLP 「這行還沒結束」:

db2 "SELECT * \
FROM my_table \
WHERE id = 1"

模式二:互動模式 db2 -t(推薦)

加上 -t 參數啟用「分號終結符模式」,即可自由換行撰寫 SQL,最後以 ; 送出:

$ db2 -t
(c) Copyright IBM Corporation 1993,2002
Command Line Processor for DB2 Client 11.5.x

You can issue database manager commands and SQL statements from the command prompt.
For example:
    db2 => connect to sample
    db2 => bind sample.bnd

db2 => CONNECT TO mydb USER myuser USING mypass
db2 => EXPORT TO "/home/user/data.txt" OF DEL MODIFIED BY coldel0x09
db2 (cont.) => SELECT col1, col2, col3
db2 (cont.) => FROM my_schema.my_table
db2 (cont.) => WHERE create_date = '2024-01-01'
db2 (cont.) => ;
SQL3104N  The Export utility is beginning to export data to file "/home/user/data.txt".
SQL3105N  The Export utility has finished exporting "554848" rows.
Number of rows exported: 554848

db2 => QUIT
DB20000I  The QUIT command completed successfully.

完整匯出流程實戰

  1. 建立輸出檔:touch data.txt
  2. 連線資料庫:db2 CONNECT TO dbname USER uid USING pwd
  3. 進入互動模式:db2 -t
  4. 執行 EXPORT 指令,指定分隔符、編碼等選項
  5. 分行撰寫 SELECT,結尾打 ; 送出
  6. 確認匯出筆數,以 QUIT 離開

常用 EXPORT 參數速查

參數說明
OF DEL以逗號分隔的純文字格式
MODIFIED BY coldel0x09改用 Tab (0x09) 做欄位分隔,避免資料含逗號衝突
MODIFIED BY nochardel不輸出字串引號
MODIFIED BY codepage=1208指定 UTF-8 編碼

後續:將匯出檔導入 Oracle

匯出的純文字檔可直接用 Oracle SQL*Loader、External Table 或 ETL 工具導入,流程相對簡單,不再贅述。

小結

  • 習慣用 db2 -t 互動模式撰寫多行 SQL,結尾以 ; 送出,最不易出錯。
  • 匯出大量資料時,善用 MODIFIED BY 調整分隔符與編碼,減少後續清洗麻煩。
  • 記得定期清理匯出暫存檔,避免佔滿磁碟空間。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved