所以我有一个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作为文件名来编写将blob数据提取到每一列的脚本。如果我可以通过上面的查询导出ID号,然后导出相应的Blob数据,那么我就可以解决其余的问题。
对其他想法持开放态度,但我确实需要能够编写脚本并从访问数据库运行它(不幸的是)
(如果有人知道如何编写脚本,我甚至可以从访问sql server的方式导出它的想法。我可以很容易地从sql server中提取数据,但这必须是我可以每月运行一次的脚本。
原因:访问数据库用于带照片证件的软件,我们要导出图片以供其他软件使用,这是该软件存储它的方式。
Suing提供的答案中的这是我完成整个工作的最终代码。从访问数据库中提取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
我很幸运将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