Table Name Fixer

來源:互聯網
上載者:User

最近碰到個問題,客戶那邊發布 SQL 檔案到生產庫,處於稽核的考慮,不能直接使用 JDBC 的使用者,須使用第三方使用者名稱。那麼這樣就會給開發人員帶來麻煩,每次發布的時候,表名必須帶上生產環境的  JDBC 使用者名稱。

為瞭解決這個問題,特地開發個輔助軟體,用於將開發人員提交的 SQL 檔案中的表名自動加上指定的表所有者。

 

 

這裡面還有兩個插曲:

1、為了替換裡面的表名,肯定不能簡單的 Replace,那能藉助什麼呢?自然是強大的Regex了。幸好 Microsoft 在 ATL 中內建了對Regex的支援庫。不過,居然沒有 Perl 樣式的 /b,無法匹配單詞分隔字元,VC 現在的Regex庫 ATLRX.h 裡面的 /b 只相當於 Perl 的 /s,代表空白字元。那沒辦法,只好另外選擇第三方的Regex庫了。提到 C++ 裡面的Regex,首先想到的就是 GRETA 和 Boost 庫(參考我的另一篇文章:Visual Studio 2008 中的 ATL),不過可惜,這幾個庫都巨大無比,雖然功能強大,不過我可不想帶個 DLL 一起發布,能減小體積的事情,幹嘛搞那麼大?於是,在網上搜尋了一下,一個小巧又功能強大、和 Perl 樣式相容的Regex庫躍入眼帘,DEELX Regex引擎

2、即使工程支援 Unicode  編碼,用 CStdioFile 讀取關鍵詞檔案,如果不是 ASCII 編碼,Unicode 或者 UTF-8 格式,都會變成亂碼。於是,從  CStdioFile 派生了一個新類 CXStdioFile,依據檔案頭來區分檔案編碼。

附檔案頭編碼:

UNI16_BE:    0xFE, 0xFF

UNI16_LE:    0xFF, 0xFE

UTF8_SIGN:   0xEF, 0xBB, 0xBF    //UTF-8 帶簽名格式

當然,要避免亂碼,還是得使用 WideCharToMultiByte 和 MultiByteToWideChar。

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.