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

SSIS 動態平面文件名:變量 + 表達式實現「文件名+日期」每日分文件輸出

     編輯:關於SqlServer

業務場景

每日從數據庫導出員工數據到文件,文件名格式:`Employee_YYYYMMDD.txt`,自動按日期分文件。

實現步驟

  1. 建立兩個包級變量:
    • OutputFolder (String) = `C:\Export\`
    • OutputFileName (String) — 由表達式動態生成
  2. OutputFileName 表達式:
    @[User::OutputFolder] + "Employee_" + (DT_WSTR,4)YEAR(GETDATE()) + 
    RIGHT("0" + (DT_WSTR,2)MONTH(GETDATE()), 2) + 
    RIGHT("0" + (DT_WSTR,2)DAY(GETDATE()), 2) + ".txt"
  3. 數據流:OLE DB 源 (查詢員工數據) → 平面文件目標
  4. 平面文件連接管理器:
    • 「連接管理器」編輯器 → 「屬性」視窗 → ConnectionString 屬性
    • 設置 Expressions → `ConnectionString` = `@[User::OutputFileName]`
  5. 執行封裝 → 每日自動生成帶日期文件名

進階擴展

  • 多層級目錄:`@[User::OutputFolder] + YEAR(GETDATE()) + "\\" + MONTH(GETDATE()) + "\\" + ...`
  • 時間戳精確到秒:加入 `HOUR/MI/SECOND` 避免同天多次覆蓋
  • 遠程共享路徑:`\\Server\Share\` + 域帳戶權限、代理服務帳戶訪問權
  • 封裝部署:SSISDB 目錄 → 環境變量覆蓋 `OutputFolder` 實現多環境配置

關鍵注意點

問題對策
表達式中日期格式不固定寬度用 `RIGHT("0"+...,2)` 強制雙位數
Flat File 連接管理器列定義與源不符重新「預覽」刷新列元數據
部署後路徑不存在PreExecute 事件用 Script Task `Directory.CreateDirectory`
並發執行衝突文件名加 GUID/進程 ID 或用獨佔鎖

源查詢結果 變量與數據流設計 平面文件連接管理器表達式配置

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