我的公司有一个供应商提供
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