将 JSON 文件导入 MS Access 表

2023-12-04

我正在尝试将 JSON 文件导入到 MS Access 表中。我在网上查了一下,发现这个堆栈溢出链接说明了这一点。自动将 JSON feed 解析到 MS Access 中我已经复制并粘贴了该字符串中的代码,并对其进行了修改以提取我的 JSON 文件,并且该代码似乎确实解析了该文件。但是,我在将解析文件的所有元素放入 Access 表时遇到问题。它似乎只引入不属于对象或数组的元素。换句话说,NPI 元素没有包含在方括号或大括号中,因此导入成功。请参阅下面的代码和 JSON 数据结构。

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 "P:\PROF REIMB\PROF REIMB\HIX\CY 2021 Analysis\Centene\JSON\provider_facility - jun 52020.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 (first), [middle] Text(255), [last] Text(255), [suffix] Text(255), [npi] 
    Text(255), [type] Text(255), [addresses] Text(255), [addresses_2] Text(255), [city] Text(255), 
    [state] Text(255), [zip] Text(255), [phone] Text(255), [specialty] Text(255), [accepting] 
    Text(255), [plans] Text(255), [plan_id_type] Text(255), [plan_id] Text(255), [network_tier] 
    Text(255), [years] Text(255); " _

    & "INSERT INTO FrmJSONFile (first,  middle,  last,  suffix,  npi,  type,  addresses,  
    addresses_2,  city,  state,  zip,  phone,  specialty,  accepting,  plans,  plan_id_type,  
    plan_id,  network_tier,  years) " _

    & "VALUES([first], [middle], [last], [suffix], [npi], [type], [addresses], [addresses_2], [city], 
    [state], [zip], [phone], [specialty], [accepting], [plans], [plan_id_type], [plan_id], 
    [network_tier], [years]);"

    Set qdef = db.CreateQueryDef("", strSQL)

    qdef!first = element("first")
    qdef!middle = element("middle")
    qdef!last = element("last")
    qdef!suffix = element("suffix")
    qdef!npi = element("npi")
    qdef!Type = element("type")
    qdef!addresses = element("addresses")
    qdef!addresses_2 = element("addresses_2")
    qdef!city = element("city")
    qdef!State = element("state")
    qdef!Zip = element("zip")
    qdef!phone = element("phone")
    qdef!specialty = element("specialty")
    qdef!accepting = element("accepting")
    qdef!plans = element("plans")
    qdef!plan_id_type = element("plan_id_type")
    qdef!plan_id = element("plan_id")
    qdef!network_tier = element("network_tier")
    qdef!years = element("years")

    qdef.Execute
Next element

Set element = Nothing
Set P = Nothing

结束功能

JSON 文件:

[{
 "name":{
      "first":"John","middle":"G","last":"Doe","suffix":"MD"
  },
  "npi":"1234567891",
  "type":"INDIVIDUAL",
  "addresses":[
    {"address":"123 Main St",
     "address_2":"",
     "city":"CHARLESTON",
     "state":"SC",
     "zip":"29406",
     "phone":"8037779311"}
   ],
   "specialty":["ANESTHESIOLOGY"],
   "accepting":"not accepting",
   "plans":[
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678912",
          "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678913",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678914",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678915",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678916",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678917",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678918",
           "network_tier":"PREFERRED","years":[2020]},
         {"plan_id_type":"HIOS-PLAN-ID","plan_id":"12345678919",
           "network_tier":"PREFERRED","years":[2020]}
     ],
     "languages":["ENGLISH"],
     "gender":"Male",
     "last_updated_on":"2020-05-26"
  }]

因为您的 JSON 是一个嵌套集合(与更简单的平面链接问题不同),所以您需要在更深层次上提取参数值。 VBA-JSON 模块映射每个[...]作为一个集合和每个{...}作为字典。相关地,考虑导入two表格个人 and plans,可能使用npi作为相关的唯一标识符。这就是关系数据库的本质模型!不要只是像电子表格一样导入数据!最后,使用保存的查询并避免 VBA 中混乱的字符串连接。

Related Tables Diagram

SQL

个人追加查询(另存为存储查询以便在 VBA 中调用)

PARAMETERS [prm_first] Text ( 255 ), [prm_middle] Text ( 255 ), [prm_last] Text ( 255 ), 
           [prm_suffix] Text ( 255 ), [prm_npi] Text ( 255 ), [prm_type] Text ( 255 ), 
           [prm_addresses] Text ( 255 ), [prm_addresses_2] Text ( 255 ), [prm_city] Text ( 255 ), 
           [prm_state] Text ( 255 ), [prm_zip] Text ( 255 ), [prm_phone] Text ( 255 ), 
           [prm_specialty] Text ( 255 ), [prm_accepting] Text ( 255 );
INSERT INTO individuals ( [first], middle, [last], suffix, npi, type, addresses, 
                         addresses_2, city, state, zip, phone, specialty, accepting )
VALUES ([prm_first], [prm_middle], [prm_last], [prm_suffix], [prm_npi], [prm_type], 
        [prm_addresses], [prm_addresses_2], [prm_city], [prm_state], [prm_zip], 
        [prm_phone], [prm_specialty], [prm_accepting]);

计划追加查询(另存为存储查询以便在 VBA 中调用)

PARAMETERS [prm_npi] Text ( 255 ), [prm_plan_id_type] Text ( 255 ), [prm_plan_id] Text ( 255 ), 
           [prm_network_tier] Text ( 255 ), [prm_years] Long;
INSERT INTO plans ( npi, plan_id_type, plan_id, network_tier, years )
VALUES ([prm_npi], [prm_plan_id_type], [prm_plan_id], [prm_network_tier], [prm_years]);

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, sub_el As Variant

    Set db = CurrentDb

    ' READ FROM EXTERNAL FILE
    FileNum = FreeFile()
    Open "C:\Path\To\myJSON.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

        ' INDIVIDUALS QUERY
        Set qdef = db.QueryDefs("qryIndividualsAppend")

        qdef!prm_first = element("name")("first")
        qdef!prm_middle = element("name")("middle")
        qdef!prm_last = element("name")("last")
        qdef!prm_suffix = element("name")("suffix")
        qdef!prm_npi = element("npi")
        qdef!prm_type = element("type")
        qdef!prm_addresses = element("addresses")(1)("address")
        qdef!prm_addresses_2 = element("addresses")(1)("addresses_2")
        qdef!prm_city = element("addresses")(1)("city")
        qdef!prm_state = element("addresses")(1)("state")
        qdef!prm_Zip = element("addresses")(1)("zip")
        qdef!prm_phone = element("addresses")(1)("phone")
        qdef!prm_specialty = element("specialty")(1)
        qdef!prm_accepting = element("accepting")

        qdef.Execute
        Set qdef = Nothing

        ' PLANS QUERY
        Set qdef = db.QueryDefs("qryPlansAppend")

        ' NESTED ITERATION THROUGH EACH PLANS ITEMS
         For Each sub_el In element("plans")
            qdef!prm_npi = element("npi")
            qdef!prm_plan_id_type = sub_el("plan_id_type")
            qdef!prm_plan_id = sub_el("plan_id")
            qdef!prm_network_tier = sub_el("network_tier")
            qdef!prm_years = sub_el("years")(1)

            qdef.Execute
         Next sub_el
    Next element

    Set element = Nothing: Set P = Nothing
    Set qdef = Nothing: Set db = Nothing
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 文件导入 MS Access 表 的相关文章

  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • 错误 - jmeter.util.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:

    当我运行将 Beanshell 后处理器作为采样器子级的 jmeter 脚本时 出现以下错误 错误 jmeter util BeanShellInterpreter 调用 bsh 方法时出错 eval 源文件 内联评估 https i st
  • 如何在 Flask 中获取 POSTed JSON?

    我正在尝试使用 Flask 构建一个简单的 API 现在我想在其中读取一些 POSTed JSON 我使用 Postman Chrome 扩展进行 POST 我 POST 的 JSON 很简单 text lalala 我尝试使用以下方法读取
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs
  • 在没有 LinkChild/LinkMaster 的情况下链接子报表

    我正在维护并偶尔修改一个 Access 97 程序 该程序仍然是一家非常大的美国公司的重要部门工具 许多报告使用 总计 子报告 我无法使用 LinkChildFields LinkMasterFields 链接该子报告 在每种情况下 主报告
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • 使用 JSON.NET 将 JSON 数据反序列化为 C#

    我对使用 C 和 JSON 数据比较陌生 正在寻求指导 我使用的是 C 3 0 NET3 5SP1 和 JSON NET 3 5r6 我有一个已定义的 C 类 需要从 JSON 结构填充该类 但是 并非从 Web 服务检索的条目的每个 JS
  • 在Excel中,我可以使用超链接来运行vba宏吗?

    我有一个包含多行数据的电子表格 我希望能够单击一个单元格 该单元格将使用该行中的数据运行宏 由于行数总是在变化 我认为每行的超链接可能是最好的方法 ROW MeterID Lat Long ReadX ReadY ReadZ CoeffA
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • 我如何以更好的方式编码而不是像这样的VBA编码

    我正在 Excel 中创建一个仪表板 但是我想知道是否有比这更好的编码方式 我想对其进行模块化 而不是这样做以使其更加整洁 Private Sub Afford If af Value True Then af afr Value Shee
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 使用 JaxRS 自定义 JSON 序列化

    在 Web 服务调用中 我想返回具有此 JSON 结构的对象 date 30 06 2014 price val 12 50 curr EUR 我想将此 JSON 代码映射到此 Java 结构 使用乔达时间 http www joda or
  • 在 JsonConverter 中递归调用 JsonSerializer

    我正在写一个JsonConverter要执行一些我需要在读 写时完成的转换任务 特别是 我采用现有的序列化行为 并在写入 读取时添加一些附加属性 在 的里面JsonConverter 我想利用通过的JsonSerializer实例来执行大部
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 使用 split 函数到数组中会导致编译错误:无法分配给数组

    我正在尝试使用split 函数根据给定名称字符串中的空格拆分名称 当尝试编译我在下面编写的代码时 出现编译错误 无法分配给数组 我几乎从这里复制了微软的示例 https support microsoft com en us kb 2662
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 使用 XMLHTTP 进行抓取会在特定类名处引发错误

    我正在尝试使用此代码抓取网站以提取姓名和联系人 Sub Test Dim htmlDoc As Object Dim htmlDoc2 As Object Dim elem As Variant Dim tag As Variant Dim

随机推荐

  • 在 Three.js 中渲染具有输入顶点的多边形

    我有多边形的顶点 x y z 坐标 作为输入 如何在 Three js 中渲染具有这些顶点的多边形 有this但似乎涉及到贝塞尔曲线 我需要简单的直边多边形 您可以使用以下代码从顶点创建多边形 var geom new THREE Geom
  • 测试 Postgres 表分区的 HASH 函数

    我正在使用 Postgres 11 并且想在主键是 UUID 的表上使用哈希分区 我知道我需要预先选择多个分区 并且主键上的哈希函数的模数将用于将行分配给每个分区 像这样的事情 CREATE TABLE new table id uuid
  • Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 集成

    我不明白FOSJs路由包跟 共事Symfony Flex Webpack and AngularJS 我已经在 Symfony 3 和 AngularJS 中使用这个包很长时间了 从来没有出现过问题 但随着 Symfony Flex 中引入
  • System.Runtime.InteropServices.COMException:检索 CLSID 为 {58968145-CF05-4341-995F-2EE093F6ABA3} 的组件的 COM 类工厂失败

    我正在运行一个 C 应用程序 并且正在使用 DSOFile dll 项目中引用了该DLL 我可以在我的开发机器上运行该exe 但是当我在另一台机器上运行 exe 时 我得到了 未处理的异常 System Runtime InteropSer
  • 有没有办法改变包装时物品的顺序?

    我正在尝试创建一个网站的一部分 由 3 个部分组成 我们称它们为 A B C 其中 A 和 B 彼此相邻 对齐以接触容器的相对两侧 它们下面是 C 但是当 A 和 B 在容器中无法并排放置时 B 会包裹在 C 下方 而不是包裹在 A 和 C
  • 错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有以下代码 TB lt data frame 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 TB BIG value lt apply TB 1 function r sr lt so
  • 偶数斐波那契数之和 < X

    我正在研究这个 我似乎有一个可行的解决方案 但我很难理解它的行为 这是我所拥有的 usr bin python def even fib sums limit number 1 last 0 before last 0 total 0 fo
  • F# 异步显示 WPF 窗口

    这个问题一直让我抓狂 总体要点如下 我的解决方案中有两个项目 第一个是 F 控制台应用程序 第二个是 C 库 其中包含名为的 C XAML 类DisplayWindow继承自 WPF 窗口 DisplayWindow有一个方法public
  • 注销后的 JSF 生命周期

    我正在使用基于表单的身份验证 我有一个注销链接 如下所示
  • 如何返回一个字符串?

    import java util public class HangManP5 public static void main String args int attempts 10 int wordLength boolean solve
  • IllegalArgumentException,从 s3 而不是 hdfs 指定输入/输出时出现错误的 FS

    我一直在本地集群上运行 Spark 作业 该集群具有 hdfs 从中读取输入并写入输出 现在我已经设置了一个 AWS EMR 和一个 S3 存储桶 其中有我的输入 并且我希望我的输出也写入 S3 错误 用户类抛出异常 java lang I
  • Mac 和 iPhone 开发书籍 2009 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 目前关于 Mac 和 iP
  • 用于从 [string] 解析输入参数-值对的本机机制

    是否有一个本机内置构造可以使用与 cmdlet 参数相同的规则自动将控制台输入解析为变量 例如 许多 cmdlet 接受以下形式的参数值对 parameter1 unspaced value1 parameter2 spaced value
  • Swift 3,元类型问题中的“.self”实际上正确吗?

    我有一个扩展可以沿着视图控制器链 甚至通过容器视图 这非常方便 public extension UIViewController go up to a certain class public func above
  • #1060 - 重复的列名

    为什么这个查询会出错 1060 Duplicate column name studentID 在 MySQL 中 我该如何预防 CREATE TEMPORARY TABLE tempTable select from member inf
  • Html 5 Canvas 完整箭头

    我正在使用 wPaint 插件 并尝试添加更多功能 我需要的是一条以 箭头 结尾的画线 我已经尝试了几乎所有我能想到的东西 但我只能得到箭头的一半 想象 这是绘制线条的函数 带有半箭头 drawArrowMove function e se
  • GCM.jar android studio

    现在我收到这个错误 Could not find gcm jar Please install the Android SDK Extra Google Cloud Messaging for Android Library using t
  • 将产品缩略图添加到我的帐户 - 最近的订单 - Woocommerce

    我想知道是否有办法将产品缩略图添加到 Woocommerce 前端 我的帐户 中买家的 最近订单 页面中 我一直在尝试寻找某种解决方案 但始终没有运气 我没有尝试过任何方法来给你一个代码 只是因为我不知道如何 实际上去解决这个问题 有人能指
  • 将 CA 签名的证书导入到 JKS

    I got 4 crt来自 CA 的文件如下 AddTrustExternalCARoot crt COMODORSADomainValidationSecureServerCA crt COMODORSAAddTrustCA crt de
  • 将 JSON 文件导入 MS Access 表

    我正在尝试将 JSON 文件导入到 MS Access 表中 我在网上查了一下 发现这个堆栈溢出链接说明了这一点 自动将 JSON feed 解析到 MS Access 中我已经复制并粘贴了该字符串中的代码 并对其进行了修改以提取我的 JS