您的位置:首页 > 数据库

将数据库中的二进制数据导出为文件

2008-11-04 14:15 369 查看
'

'

' 本程序将数据库中的二进制值导出为数据文件

' 使用:在CMD命令行下输入

' outImg /? 查看帮助

'

'

Option Explicit

If Wscript.Arguments.Count = 0 Then Wscript.quit

Dim serverName , userName , password , database , sql , filePath

Dim i

For i = 0 To Wscript.Arguments.Count - 1

Select Case Wscript.Arguments(i)

Case "/S":

If i + 1 < Wscript.Arguments.Count Then serverName = Wscript.Arguments(i + 1)

If InStr(serverName,"/") > 0 Then

serverName = ""

End If

Case "/U":

If i + 1 < Wscript.Arguments.Count Then userName = Wscript.Arguments(i + 1)

If InStr(userName,"/") > 0 Then

userName = ""

End If

Case "/P":

If i + 1 < Wscript.Arguments.Count Then password = Wscript.Arguments(i + 1)

If InStr(password,"/") > 0 Then

password = ""

End If

Case "/DB":

If i + 1 < Wscript.Arguments.Count Then database = Wscript.Arguments(i + 1)

If InStr(database,"/") > 0 Then

database = ""

End If

Case "/SQL":

If i + 1 < Wscript.Arguments.Count Then sql = Wscript.Arguments(i + 1)

If InStr(sql,"/") > 0 Then

sql = ""

End If

Case "/PATH":

If i + 1 < Wscript.Arguments.Count Then filePath = Wscript.Arguments(i + 1)

If InStr(filePath,"/") > 0 Then

filePath = ""

End If

Case "/?":

MsgBox "帮助说明:" & Chr(10) & Chr(13) & _

"/S SQL服务器名称" & Chr(10) & Chr(13) & _

"/U 登陆用户" & Chr(10) & Chr(13) & _

"/P 登陆密码" & Chr(10) & Chr(13) & _

"/DB 数据库名称" & Chr(10) & Chr(13) & _

"/SQL SQL语句,第一列保存为图片," & Chr(10) & Chr(13) & _

" 如果有第二列的话,就作为图片名称," & Chr(10) & Chr(13) & _

" 其它列忽略掉。" & Chr(10) & Chr(13) & _

"/PATH 要保存的图片路径"

Wscript.quit

End Select

Next

If Right(filePath,1) = "/" Then filePath = Left(filePath , Len(filePath) - 1)

' 数据库处理部分

Dim conn , rs , myStream , fso

Set conn = Wscript.CreateObject("adodb.connection")

conn.open "driver={sql server};server=" & serverName & ";uid=" & userName & ";pwd=" & password & ";database=" & database

Set rs = Wscript.CreateObject("adodb.recordset")

rs.open sql,conn,3,3

Set myStream = Wscript.CreateObject("Adodb.Stream")

myStream.Type = 1

Set fso = Wscript.CreateObject("scripting.filesystemobject")

Dim hasFileName , fileName

If rs.fields.count > 1 Then hasFileName = True

i = 0

Do While Not rs.eof

i = i + 1

If hasFileName = True Then

fileName = rs(1)

Do While fso.fileExists(filePath & "/" & fileName)

fileName = "同名文件 " + fileName

Loop

Else

fileName = Year(Now()) & Month(Now()) & Day(Now()) & Hour(Now()) & Minute(Now()) & Second(Now()) & i & ".dat"

End If

myStream.Open

myStream.Write Rs(0).GetChunk(rs(0).ActualSize-78)

myStream.SaveToFile filePath & "/" & fileName

myStream.Close

wscript.sleep 10

rs.movenext

Loop

rs.close

conn.close

MsgBox "导出完成!"

Wscript.quit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: