通过vbscript从Access中提取Blob数据

时间:2015-04-13 22:50:32

标签: sql ms-access vbscript blob

所以我有一个从访问数据库中提取数据的vbscript

示例:

db = "C:\Users\username\databases\employeeID.mdb"
TextExportFile = "C:\Users\username\databases\Exp.txt"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & "Data Source =" & db

strSQL = "SELECT IDNumber+','+Name FROM employeeID "

rs.Open strSQL, cn, 3, 3

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateTextFile(TextExportFile, True)

a = rs.GetString
f.WriteLine a
f.Close

导出如下:

19199439,person
29034234,john

我遇到的问题是当我将名称更改为Blob列时,blob列为空。在访问中它只是说:长二进制数据

我认为它与文本字符串和二进制字符串有关,但我不知道如何设置它以撤回该信息。

BLOB字段中的字符串是jpg文件

我的最终目标是使用IDNumber作为文件名将脚本数据提取到每列中。如果我可以得到上面的查询来导出ID号然后相应的blob数据,我可以处理其余的。

对其他想法持开放态度,但我确实需要能够编写脚本并从访问数据库中运行它(不幸的是)

(如果有人知道如何编写脚本,我甚至愿意从访问sql server导出它。从sql server我可以很容易地提取数据,但这必须是我可以运行脚本的东西一个月一次。

原因:访问数据库用于照片ID软件,我们想导出图片以便在其他软件中使用,这就是软件存储它的方式。

从Suing提供的答案这里是我的最终代码,整个shebang。从访问数据库中提取blob数据,用相应的Id编号命名每个blob字段,将.jpg添加到每个文件的末尾,并将其放在我需要的文件夹中。

db = "C:\Users\amoore19\databases\employeeID.mdb"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set mstream = CreateObject("ADODB.Stream")

mstream.Type = 1 ''adTypeBinary

cn.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & "Data Source =" & db

strSQL = "SELECT AimsIDNumber,photo FROM employeeID WHERE AimsIDNumber like 'A00%' and photo is not null"

rs.Open strSQL, cn

DO WHILE not rs.eof

mstream.Open
mstream.Write rs("photo")
mstream.SaveToFile "C:\images\all\" & rs("AimsIDNumber") & ".jpg", 2 ''adSaveCreateOveWrite
mstream.close
rs.movenext

Loop

1 个答案:

答案 0 :(得分:3)

我很幸运将Blob值写入流文件 试试这个:

db = "C:\Users\username\databases\employeeID.mdb"
TextExportFile = "C:\Users\username\databases\Exp.txt"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set mstream = CreateObject("ADODB.Stream")

mstream.Type = 1 'adTypeBinary

cn.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & "Data Source =" & db

strSQL = "SELECT IDNumber,Name FROM employeeID "

rs.Open strSQL, cn

Do Until rs.EOF
   mstream.Open
   mstream.Write rs("Name")
   mstream.SaveToFile rs("IDNumber"), 2 'adSaveCreateOveWrite
   mstream.close
   rs.MoveNext 
Loop


'Set fs = CreateObject("Scripting.FileSystemObject")
'Set f = fs.CreateTextFile(TextExportFile, True)
'a = rs.GetString
'f.WriteLine a
'f.Close