本以為BCP讀寫的功能沒什麼難度的,
在最後測試階段卻踢到了板。
以下是我兩天的心(辛)路歷程…
流程如下
- USER,進官網下載CVS名單檔,解壓縮後上傳到FTP目錄
- 程式,抓FTP的名單檔下來
- 程式,SQL BCP讀檔寫到TABLE
- 程式,依名單內容撈取交易資料
- 程式,產生UTF8格式且用|分隔的CSV檔
- 程式,將CSV結果檔上傳到FTP目錄
- 程式,發MAIL通知USER"可取檔"
- USER,進FTP取CSV結果檔,上傳到官網
第一關:
先是發現USER提供的檔案和官網提供的不同,
官網是UTF8,USER提供的是BIG5,昏....
一問之下才知道是USER打開覺得是亂碼,
有用EXCEL匯入匯出的方式加工。
解法:
好在SQL 2014以後有支援UTF8的編碼,
加入codepage=65001的解法,就OK了。
參考:
第二關:
換行符號,0d0a crlf \r\n一直辨識不出來!
官網提供的只有0a,屬於linux的換行符號,
怎麼換bcp的換行符號-r都沒有用,
解法:
找到補換行符號的方式
參考:
第三關:
USER用EXCEL開UTF8的CSV檔會是亂碼,覺得困擾
解法:
另存成BOM的UTF8檔即可解決
參考: