Table Name Fixer

介绍了一款用于自动转换SQL文件中表名的工具,该工具能够帮助开发人员在发布SQL文件时自动添加指定的所有者前缀,解决了因权限限制带来的不便。文章详细描述了在实现过程中遇到的技术挑战及解决方案,包括正则表达式的选择与应用,以及如何正确处理不同编码格式的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近碰到个问题,客户那边发布 SQL 文件到生产库,处于稽核的考虑,不能直接使用 JDBC 的用户,须使用第三方用户名。那么这样就会给开发人员带来麻烦,每次发布的时候,表名必须带上生产环境的  JDBC 用户名。

为了解决这个问题,特地开发个辅助软件,用于将开发人员提交的 SQL 文件中的表名自动加上指定的表所有者。

 

截图:

 

这里面还有两个插曲:

1、为了替换里面的表名,肯定不能简单的 Replace,那能借助什么呢?自然是强大的正则表达式了。幸好 Microsoft 在 ATL 中内置了对正则表达式的支持库。不过,居然没有 Perl 样式的 /b,无法匹配单词分隔符,VC 现在的正则表达式库 ATLRX.h 里面的 /b 只相当于 Perl 的 /s,代表空白字符。那没办法,只好另外选择第三方的正则表达式库了。提到 C++ 里面的正则表达式,首先想到的就是 GRETA 和 Boost 库(参考我的另一篇文章:Visual Studio 2008 中的 ATL),不过可惜,这几个库都巨大无比,虽然功能强大,不过我可不想带个 DLL 一起发布,能减小体积的事情,干嘛搞那么大?于是,在网上搜索了一下,一个小巧又功能强大、和 Perl 样式兼容的正则表达式库跃入眼帘,DEELX 正则表达式引擎

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。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值