通过 vbscript 从 Access 中提取 Blob 数据
Extract Blob data from Access via vbscript
所以我有一个从访问数据库中提取数据的 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 列为空白。在访问中它只是说:Long Binary Data
我相信它与文本字符串和二进制字符串有关,但我不知道如何设置它来拉回该信息。
BLOB字段中的字符串是jpg文件
我的最终目标是编写将 blob 数据提取到每个列中的脚本,并将 IDNumber 作为文件名。如果我能得到上面的查询导出 ID 号然后相应的 blob 数据,我可以处理剩下的事情。
对其他想法持开放态度,但我确实需要能够编写脚本并运行它来自访问数据库(不幸的是)
(如果有人知道如何编写脚本,我什至愿意将其从访问 sql 服务器导出。从 sql 服务器我可以很容易地提取数据,但是这必须是我可以每月编写一次 运行 的脚本。
原因:access数据库是给照片id软件用的,我们想导出图片给其他软件使用,软件就是这样存储的。
来自 Suing 提供的答案是我完成整个 shebang 的最终代码。从 access 数据库中提取 blob 数据,用相应的 Id Number 命名每个 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
所以我有一个从访问数据库中提取数据的 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 列为空白。在访问中它只是说:Long Binary Data
我相信它与文本字符串和二进制字符串有关,但我不知道如何设置它来拉回该信息。
BLOB字段中的字符串是jpg文件
我的最终目标是编写将 blob 数据提取到每个列中的脚本,并将 IDNumber 作为文件名。如果我能得到上面的查询导出 ID 号然后相应的 blob 数据,我可以处理剩下的事情。
对其他想法持开放态度,但我确实需要能够编写脚本并运行它来自访问数据库(不幸的是)
(如果有人知道如何编写脚本,我什至愿意将其从访问 sql 服务器导出。从 sql 服务器我可以很容易地提取数据,但是这必须是我可以每月编写一次 运行 的脚本。
原因:access数据库是给照片id软件用的,我们想导出图片给其他软件使用,软件就是这样存储的。
来自 Suing 提供的答案是我完成整个 shebang 的最终代码。从 access 数据库中提取 blob 数据,用相应的 Id Number 命名每个 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