新增检查sql脚本是否符合ANSI编码格式
'*******************************************************************
'作用:transfer转换文件编码格式
'参数含义:incode为传入的文件编码 outcode转换后的文件编码
'进行判断文件类型是否是ansi类型,如果不是,提供选择是否需要自动更新文件
'*******************************************************************
Function read(path)
'将Byte()数组转成String字符串
Dim ado, a(), i, n
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1 : ado.Open
ado.LoadFromFile path
n = ado.Size - 1
ReDim a(n)
For i = 0 To n
a(i) = ChrW(AscB(ado.Read(1)))
Next
read = Join(a, "")
End Function Function is_valid_utf8(ByRef input) 'ByRef以提高效率
Dim s, re
Set re = New Regexp
s = "[\xC0-\xDF]([^\x80-\xBF]|$)"
s = s & "|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)"
s = s & "|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)"
s = s & "|[\xF8-\xFB].{0,3}([^\x80-\xBF]|$)"
s = s & "|[\xFC-\xFD].{0,4}([^\x80-\xBF]|$)"
s = s & "|[\xFE-\xFE].{0,5}([^\x80-\xBF]|$)"
s = s & "|[\x00-\x7F][\x80-\xBF]"
s = s & "|[\xC0-\xDF].[\x80-\xBF]"
s = s & "|[\xE0-\xEF]..[\x80-\xBF]"
s = s & "|[\xF0-\xF7]...[\x80-\xBF]"
s = s & "|[\xF8-\xFB]....[\x80-\xBF]"
s = s & "|[\xFC-\xFD].....[\x80-\xBF]"
s = s & "|[\xFE-\xFE]......[\x80-\xBF]"
s = s & "|^[\x80-\xBF]"
re.Pattern = s
is_valid_utf8 = (Not re.Test(input))
End Function Function CheckCode(Sourcefile)
'WScript.echo "Checking: " & Sourcefile
Dim stream
set stream = CreateObject("Adodb.Stream")
stream.Type = 1 'adTypeBinary
stream.Mode = 3 'adModeReadWrite
stream.Open
stream.Position = 0
stream.LoadFromFile Sourcefile
Bin = stream.read(2)
s = read(Sourcefile) '读取文件
if is_valid_utf8(s)=-1 then'判断是否UTF-8
Codes = "utf-8"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
'&HEF 239 &HBB 187 &HFF 255 &HFE 254
elseif AscB(MidB(Bin, 1, 1)) = &HEF and _
AscB(MidB(Bin, 2, 1)) = &HBB Then
Codes = "utf-8"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
elseif AscB(MidB(Bin, 1, 1)) = &HFF and _
AscB(MidB(Bin, 2, 1)) = &HFE Then
Codes = "unicode"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
elseif AscB(MidB(Bin, 1, 1)) = &HFE and _
AscB(MidB(Bin, 2, 1)) = &HFF Then
Codes = "unicode big endian"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
Codes = "unicode"
else
Codes = "gb2312"
end if stream.Close
set stream = Nothing
CheckCode = Codes
end Function '*******************************************************************
'作用:transfer转换文件编码格式
'参数含义:incode为传入的文件编码 outcode转换后的文件编码
'*******************************************************************
Function transfer(inFile,incode,outcode,outfile)
Set instream = CreateObject("Adodb.Stream")
Set outstream = CreateObject("Adodb.Stream") 'Open input file
instream.Type = 2 'adTypeText
instream.Mode = 3 'adModeReadWrite
instream.Charset = inCode
instream.Open
instream.LoadFromFile inFile 'Read input file
content = instream.ReadText 'Close input file
instream.Close
Set instream = Nothing 'Open output file
outstream.Type = 2 'adTypeText
outstream.Mode = 3 'adModeReadWrite
outstream.Charset = outCode
outstream.Open 'Write to output file
outstream.WriteText content
outstream.SaveToFile outFile, 2 'adSaveCreateOverWrite
outstream.flush 'Close output file
outstream.Close
Set outstream = Nothing
end Function
'*******************************************************************
'作用:GetDirectory获取当前目录
'参数含义:
'*******************************************************************
Function GetDirectory()
Dim WshShell
Set WshShell=CreateObject("WScript.Shell")
GetDirectory = WshShell.CurrentDirectory
Set WshShell = nothing
End Function
'*******************************************************************
'*******************************************************************
'作用:rrubstr取字符串istr中的sign字符串后面的子字符串;从字符串尾部搜索的位置
'参数含义:
'*******************************************************************
Function rsubstr (istr, sign)
Dim fnum,substr
fnum = instrRev (istr,sign) + Len(sign) - 1
substr = Right (istr,Len(istr)-fnum)
rsubstr = substr
End Function
'*******************************************************************
'作用:
'参数含义:
'*******************************************************************
Function Main()
'创建新文件
Set nfso = CreateObject("Scripting.FileSystemObject")
'遍历一个文件夹下的所有文件
Set oFso = CreateObject("Scripting.FileSystemObject")
fold = GetDirectory()&"\"
Set oFolder = oFso.GetFolder(fold)
Dim inFile
isExist = 0
isTransfer = 0
isCount = 0
Set oFiles = oFolder.Files
'对每个文件进行处理
For Each oFile In oFiles
inFile = oFile.path
if rsubstr(inFile,".") <> "vbs" then isCount = isCount +1
incode = CheckCode (infile)
outcode ="gb2312"
if incode <> outcode then
choice = Msgbox(inFile & " is not ansi,请注意!" & vbCrlf & _
" Do you want to transfer it?", vbQuestion + vbYesNo, _
"Output file has been existed")
if choice = vbYES then
transfer inFile,incode,outcode,inFile
'msgbox inFile &"格式转换成功!"
isTransfer = isTransfer +1
end if
isExist = isExist+1
end if
end if
Next
set nfso = nothing
set ntf = nothing
set oFolder = nothing
set oFiles = nothing
msgbox "共检查文件:"&isCount&",发现格式不对文件:"&isExist&",共转换成功文件:"&isTransfer
End Function Main
新增检查sql脚本是否符合ANSI编码格式的更多相关文章
- flyway实现java 自动升级SQL脚本
flyway实现java 自动升级SQL脚本 为什么要用Flyway 在日常开发中,我们经常会遇到下面的问题: 自己写的SQL忘了在所有环境执行: 别人写的SQL我们不能确定是否都在所有环境执行过了: ...
- mysql命令行导入sql脚本中文变问号问题
之前一直用工具连接mysql虽然小问题不断也都无伤大雅,最近做金融云项目,只能通过服务器的内网访问数据库,也就是说只能在linux下通过命令行访问,在导入中文的时候发现都变成问号了,经过查询资料解决, ...
- 将现有的sql脚本导入 Oracle 数据库,中文乱码问题
将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...
- 如何快速的进行sql脚本升级
sql脚本升级即从一个老的脚本升级到一个新的全量的脚本.比如公司有某一个项目,有的客户已经用这个项目了,数据库里面去掉以前的初始化数据外,现在还有了客户自己的数据.但是这个版本中有严重的bug,所以为 ...
- Jenkins系列之-—08 实现SQL脚本批量执行
公司内部推广DevOps,所有目前在维护阶段和开发阶段项目全部配置上了自动发布.采用Jenkins+SVN+ANT,之后批量执行SQL语句的实现提上日程 一.环境 Linux环境 安装ANT工具,且下 ...
- 数据库优化方案之SQL脚本优化
随着数据库数据越来越大,数据单表存在的数据量也就随之上去了,那么怎么样让我们的脚本查询数据更快呢? 在这个地方我们主要提到两个数据库类型: 1.MSSQL(该数据库我们通过执行计划来查看数据库性能在哪 ...
- access生成sql脚本,通过VBA调用ADOX
access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...
- 让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?
第2部分 数据库SQL语言 怎样改动SQL脚本以完毕需求? SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤: 第一步,阅读需求.弄清楚自己要完毕什么功能. ...
- .net(C#)在Access数据库中执行sql脚本
自己写的一个工具类,主要是业务场景的需要. 主要有两个功能: ①执行包含sql语句的字符串 ②执行包含sql语句的文件 调用方式 /// <summary> /// 执行sql语句 /// ...
随机推荐
- Django与前端的交互
在创建Django项目后,我们创建了一个App,我将这个App的名字命名为Cal,并在Cal这个文件夹下创建文件 templates. 创建templates文件夹以后,在项目settings.py文 ...
- tomcat主页打不开,tomcat manager 配置,Failed to start component [StandardEngine[Catalina].
Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Serv]] ...
- 一起来做Chrome Extension《搭个架子》
CEF - A simple Chrome Extension development falsework CEF是一个简单的Chrome Extension开发脚手架,它有如下功能: 模块化的结构, ...
- unity TileMap 简述
主要工具 说明 更多说明 Sprite 精灵,纹理的容器. 大型纹理图集可以转为精灵图集(Sprite Sheet). Tile 瓦片,包含一个精灵,以及两个属性,颜色和碰撞体类型. Tilema ...
- [linux] C语言Linux系统编程-捕获进程信号
typedef void( *sighandler_t)(int); 1.用typedef给类型起一个别名. 2.为函数指针类型定义别名, 3.函数指针(指向函数的指针) sighandler_t s ...
- GString惰性求值
当对一个GString实例求值时,如果其中包含一个变量,该变量的值会被简单地打印到一个Writer,通常是一个StringWriter.然而,如果GString中包含的是一个闭包,而非变量,该闭包就会 ...
- Elasticsearch数据类型
Elasticsearch自带的数据类型是Lucene索引的依据,也是做手动映射调整的依据.映射中主要就是针对字段设置类型以及类型相关参数.1.JSON基础类型如下:字符串:string数字:byte ...
- HDU 2639(01背包第K大)
http://acm.hdu.edu.cn/showproblem.php?pid=2639 http://blog.csdn.net/lulipeng_cpp/article/details/758 ...
- Spring入门(三)— AOP注解、jdbc模板、事务
一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...
- stm32f10x单片机进阶--spi使用
使用SPI与外部flash(MX25L6406EM21)IC通信 连接方式 如上图所示,MCU通过SPI2与外部flash芯片进行相连接. MCU spi2初 ...