第十四章PROC處理程序實作第十四章PROC處理程序實作\14-7 以FTP進行資料整合應用

14-7 FTP進行資料整合應用

 

企業的資訊系統通常不一定是集中管理,有時會分散在不同的地點,這時可能就需要以FTP的方式來傳送資料,並以程式來整合到資料庫中。PROC同樣支援一個 [FTP]的活動來進行自動化的FTP檔案上傳或下載,再透過其他活動來進行資料整合。如下,以兩個系統的客戶資料整合為例,透過 FTP來下載 "CUSTOMERS.xlsx" 並整合到 "客戶資料表"中,如下的流程:

Step1>新增一個PROC,命名為"FTP下載",並在[開始] 中設定一個file_name傳入變數(由前端或排程傳入),另一個為ftp_result,初值設為''

 

Step2>貼入一個[FTP] 活動,設定屬性如下:

Title設定為"FTP下載"

Host代表FTP的主機IP或網址。

HostFolder配合FTP主機上的設定,指定主機端檔案的目錄,設定為"/homes/infolight"

LocalFolder指下載之後會放在EEPCloud主機上的哪一個目錄,設定存放到csv目錄。

Mode可設定downloadupload,這裡設定download

User/Password代表FTP主機上的帳號與密碼。

FileNamesVar,指所要下載或上傳的檔案名稱,請選file_name變數,內容就是檔案名稱。

ErrorVarFTP錯誤時傳回訊息的變數名稱。

 

Step3>貼入一個[條件] 活動,左邊設定為"下載成功"Expression條件設定為ftp_result=='' (代表成功);右邊設定為"下載失敗"Expression條件不必設定。

 

Step4> [下載成功]中貼入[文件匯入]活動,用來讀取Excel檔案到變數當中,屬性如下:

Var代表匯入資料後所要儲存的變數名稱。這裡設定為ftp_rows(陣列變數)

FileFolder代表所要匯入資料的目錄名稱,配合上面的 [FTP] 活動,目錄名稱為csv

FileNameVar代表要匯入資料的檔案名稱,設定為file_name,內容存放檔案名稱。

Columns,代表指定的匯入欄位,如下,把想要匯入的欄位事先設定好,如下:

StartRow,起始資料的列數,通常都是0,代表從第1行開始(包括最上面的欄位表頭)

StartColumn,起始資料的行數,通常都是0,代表第1個欄位開始。

EndRow,終止資料的列數,如果要抓到最後,請不要設定。

InputType,這裡選擇Excle

 

Step5> [匯入Excel]活動下方,貼入[sql插入]活動,用來將陣列變數回寫到指定的資料表中,屬性如下:

RowsVar代表要寫入資料表的變數來源,為一個陣列變數(有多筆),設定來源變數為ftp_rows

Table代表要寫入資料表的名稱,這裡設定為"客戶資料表"

Keys代表Table資料表的鍵值欄位,用來檢查重複用的。在此設定為"客戶編號"

UpdateIfExist設為True時,如果資料已經存在(Keys鍵值已經存在),則會以Update的方式進行資料更新;鍵值不存在則以Insert方式新增。

AutoCommit代表執行本活動後會自動Commit確認交易。

 

Step6> [插入資料表]活動下方,貼入[消息發送]活動,採用Mail的方式通知管理者,告知FTP下載成功,如下:

 

Step7>在右邊的 [下載失敗]條件活動中,同樣貼入[消息發送]活動,以Mail的方式通知管理者,告知FTP下載失敗,如下:

 

Step8>接著在上例的FTP 主機上,我們準備了一個CUSTOMERS.xlsx,內容如下:

為了能證實有下載此XLSX檔案並新增到客戶資料表中,可以刪除所有的客戶資料。

 

Step9>透過預覽Debug來測試,如下:

為了模擬使用者傳送file_name變數,一開始我們可以在右下方輸入file_name='CUSTOMERS.xlsx',接著按下二次【下一步】執行完 [FTP下載],此時傳回值ftp_result應該為空白(有內容通常是錯誤訊息)

【下一步】會執行 [匯入Excel] 活動,並將這個CUSTOMERS.xlsx讀入到ftp_rows當中;【下一步】則將 ftp_rows的資料回寫新增到客戶資料表中。最後,透過Mail發送告知管理者,FTP下載並更新成功。

可以再打開 [客戶資料表] 查看剛剛透過FTP下載的資料已更新到資料表中:

 


 

Top of Page