BCP & CSV & UTF8

  • 857
  • 0
  • 2021-08-30

本以為BCP讀寫的功能沒什麼難度的,
在最後測試階段卻踢到了板。

以下是我兩天的心(辛)路歷程…

流程如下

  1. USER,進官網下載CVS名單檔,解壓縮後上傳到FTP目錄
  2. 程式,抓FTP的名單檔下來
  3. 程式,SQL BCP讀檔寫到TABLE
  4. 程式,依名單內容撈取交易資料
  5. 程式,產生UTF8格式且用|分隔的CSV檔
  6. 程式,將CSV結果檔上傳到FTP目錄
  7. 程式,發MAIL通知USER"可取檔"
  8. 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檔即可解決

參考: