我的公司有一个供应商提供
JSON数据源,我需要每两个小时加载到我们的MS Access数据库中.我需要:
>从Feed中加载数据,
>将JSON解析为Access的可用格式,然后
>将其插入数据库.
我遇到了this question讨论类似的问题,但是没有很好的描述如何在MS Access中实现它.任何帮助感激不尽!
解决方法
使用
VBA JSON库,您当然可以将JSON格式的文件导入MS Access.我们的想法是将JSON数据视为字典集合,Visual Basic将
collection和
dictionary作为数据结构提供.
以下是步骤:
>构建一个表以匹配预期的JSON数据的结构
>在MS Access的VBA IDE端,将JsonConverter.bas(从上面的链接)导入新模块
>仍在IDE中的“工具/参考”下,选中“VBA参考:Microsoft脚本运行时”
>包括以下读取JSON文本文件的代码,将其解析为字典集合(带有键和valeus),并将值迭代地附加到Access表中.将代码放在Access表单或模块后面(示例使用一个嵌套级别的JSON文件)
JSON
[
{
"col1": somenumber,"col2": "somestring","col3": "somestring","col4": "somestring","col5": "somestring"
}
]
VBA代码
Private Function JSONImport()
Dim db As Database,qdef As Querydef
Dim FileNum As Integer
Dim DataLine As String,jsonStr As String,strsql As String
Dim p As Object,element As Variant
Set db = CurrentDb
' READ FROM EXTERNAL FILE
FileNum = FreeFile()
Open "C:\Path\To\JsonFile.json" For Input As #FileNum
' PARSE FILE STRING
jsonStr = ""
While Not EOF(FileNum)
Line Input #FileNum,DataLine
jsonStr = jsonStr & DataLine & vbNewLine
Wend
Close #FileNum
Set p = ParseJson(jsonStr)
' IteraTE THROUGH DATA ROWS,APPENDING TO TABLE
For Each element In p
strsql = "ParaMETERS [col1] Long,[col2] Text(255),[col3] Text(255)," _
& "[col4] Text(255),[col5] Text(255); " _
& "INSERT INTO TableName (col1,col2,col3,col4,col5) " _
& "VALUES([col1],[col2],[col3],[col4],[col5]);"
Set qdef = db.createqueryDef("",strsql)
qdef!col1 = element("col1")
qdef!col2 = element("col2")
qdef!col3 = element("col3")
qdef!col4 = element("col4")
qdef!col5 = element("col5")
qdef.Execute
Next element
Set element = nothing
Set p = nothing
End Function