使用 MS SQL Server 读取包含多个 JSON 对象的文件

2024-03-09

我需要帮助在 MSSQL 中读取 JSON 文件

我有一个像这样的 json 格式

{ 
   "_id":{ 
      "$oid":"5c6ceb395916c77f71d9f531"
   },
   "uuid":"8337df01-7d98-4cdd-b5eb-7fafa88d3740",
   "firstName":"TESTFN",
   "lastName":"TESTLN",
   "middleName":"TESTMN",
   "gender":"MALE",
   "nationality":"",
   "mobileNumber":"",
   "card":"TACC-00001",
   "claims":{ 
      "$numberLong":"1"
   },
   "hisId":{ 
      "$numberLong":"0"
   },
   "hospitals":[ 
      { 
         "$ref":"hospital",
         "$id":{ 
            "$oid":"5bd80e4e36ec8c600f3e750a"
         }
      }
   ]
}

我正在尝试使用下面的代码读取 json。它运行良好。 但是,当我使用重复上述格式并且具有很多字段的确切源文件时,我只检索一行。

SELECT *
 FROM OPENROWSET (BULK 'C:\demo_json\claims.json', SINGLE_CLOB) as j
 CROSS APPLY OPENJSON(BulkColumn)

我搜索了一下,发现是因为多层嵌套的json。 使用下面的代码..

SELECT *
 FROM OPENROWSET (BULK 'C:\demo_json\claims.json', SINGLE_CLOB) as j
 CROSS APPLY OPENJSON('['+BulkColumn+']')

但我收到错误:JSON 文本格式不正确。在位置 2760 处发现意外字符“{”。

注意:我无法控制或无法编辑源文件 JSON 我可以做什么来确保 JSON 文件格式正确或使其正确以供我阅读。

源文件 :claims https://drive.google.com/file/d/14RScFRN2WBjQS3E0pP7QSpGz1E2VEwss/view?usp=sharing


看起来,您的输入文件中有有效的行JSON对象。在这种情况下,一种可能的方法是使用以下命令导入此文件BULK INSERT和适当的ROWTERMINATOR:

文本文件(claims.json):

{"_id":{"$oid":"5c6ceb395916c77f71d9f536"},"_class":"stash.ph.data.model.mongo.claims.Claims","uuid":"02735305-220e-4399-9217-0b99939797d2","submittedAt":{"$date":{"$numberLong":"1550641993123"}},"submittedByUuid":"c60d326e-0893-4718-a0e0-f64ac697dd2e","status":"SUBMITTED","billingDesignation":"Hospital","createdAt":{"$date":{"$numberLong":"1550641977093"}},"updatedAt":{"$date":{"$numberLong":"1550641977093"}},"particulars":[{"_id":{"$oid":"5c6ceb395916c77f71d9f530"},"uuid":"b2b3cc59-b9a8-49f1-8f92-30021d2c7abb","particular":"ER_CONSULTATION","procedure":[],"doctors":[{"_id":{"$oid":"5c6ceb395916c77f71d9f52f"},"uuid":"494e1bf9-a3f9-4c3a-bdc0-3ef15b4760a2","type":"PRIMARY","professionalFee":{"$numberDouble":"500.0"},"doctor":{"$ref":"doctor","$id":{"$oid":"5bd8156736ec8c600f3e7604"}}}]}],"patient":{"_id":{"$oid":"5c6ceb395916c77f71d9f531"},"uuid":"8337df01-7d98-4cdd-b5eb-7fafa88d3740","firstName":"TESTFN","email":"","lastName":"TESTLN","middleName":"TESTMN","suffix":"","prefix":"","birthday":"","age":"","gender":"MALE","nationality":"","mobileNumber":"","card":"TACC-00001","cardExpiration":"","company":"","claims":{"$numberLong":"1"},"phicNo":"","hisId":{"$numberLong":"0"},"hospitals":[{"$ref":"hospital","$id":{"$oid":"5bd80e4e36ec8c600f3e750a"}}],"hmos":[]},"files":[{"_id":{"$oid":"5c6ceb395916c77f71d9f533"},"uuid":"8731cb71-e424-4147-8158-38558df56ad5","filename":"8731cb71-e424-4147-8158-38558df56ad5.pdf","description":"files desc"}],"medicalData":{"_id":{"$oid":"5c6ceb395916c77f71d9f534"},"uuid":"617e193b-2280-491b-b34f-adf6eaeb2244","complain":[""],"diagnosis":["A90 | Dengue fever [classical dengue]"],"remarks":"","dateExamined":{"$date":{"$numberLong":"1546272000000"}}},"loa":{"_id":null,"uuid":"b4bc96d1-554b-4cc7-9511-c56d325cf5de","referenceId":""},"payment":{"_id":{"$oid":"5c6ceb395916c77f71d9f535"},"uuid":"9714fdf1-311f-4898-8070-f3fd1ddd0658","phicBill":{"$numberDouble":"0.0"},"hospitalBill":{"$numberDouble":"0.0"},"total":{"$numberDouble":"500.0"},"balance":{"$numberDouble":"500.0"},"createdAt":{"$date":{"$numberLong":"1550641977101"}},"updatedAt":{"$date":{"$numberLong":"1550641977101"}}},"hmoRepresentative":"","remarks":"","registryNumber":{"$numberLong":"0"},"soaNumber":"MBC-MCD-OUT-190000001","soaUuid":"2366abe1-672b-456b-bfd9-5584bf9e7f5a","batchName":"BATCH-190000001","claimLogs":[{"_id":{"$oid":"5c6ceb395916c77f71d9f532"},"uuid":"e2079956-0fbd-4565-9a93-0791a898fbcd","status":"PENDING","date":{"$date":{"$numberLong":"1550641977093"}},"userUuid":"c60d326e-0893-4718-a0e0-f64ac697dd2e","firstName":"Medicard","middleName":"","lastName":"Hospital"}],"messages":[],"hospital":{"$ref":"hospital","$id":{"$oid":"5bd80e4e36ec8c600f3e750a"}},"hmo":{"$ref":"hmo","$id":{"$oid":"598615f970d8a672a291132e"}}}
{"_id":{"$oid":"5c6ceda95916c77f71d9f574"},"_class":"stash.ph.data.model.mongo.claims.Claims","uuid":"73e6627e-187a-4f9f-a141-e4e01666c7c4","submittedAt":{"$date":{"$numberLong":"1550642786142"}},"submittedByUuid":"c60d326e-0893-4718-a0e0-f64ac697dd2e","status":"RETURN","billingDesignation":"Hospital","createdAt":{"$date":{"$numberLong":"1550642601507"}},"updatedAt":{"$date":{"$numberLong":"1550642601507"}},"particulars":[{"_id":{"$oid":"5c6ceda95916c77f71d9f56e"},"uuid":"8c774847-e0ca-4732-9669-6bf6a4579cc6","particular":"ER_CONSULTATION","procedure":[],"doctors":[{"_id":{"$oid":"5c6ceda95916c77f71d9f56d"},"uuid":"0520ffdf-ceb9-4413-8cec-c5eb728b8972","type":"PRIMARY","professionalFee":{"$numberDouble":"500.0"},"doctor":{"$ref":"doctor","$id":{"$oid":"5bd8156736ec8c600f3e7604"}}}]}],"patient":{"_id":{"$oid":"5c6ceda95916c77f71d9f56f"},"uuid":"e71116f6-710e-4e13-b806-c88cf172f5ca","firstName":"FGSDF","email":"","lastName":"FDGDS","middleName":"FGHDSF","suffix":"","prefix":"","birthday":"","age":"","gender":"MALE","nationality":"","mobileNumber":"","card":"TACC-00002","cardExpiration":"","company":"","claims":{"$numberLong":"1"},"phicNo":"","hisId":{"$numberLong":"0"},"hospitals":[{"$ref":"hospital","$id":{"$oid":"5bd80e4e36ec8c600f3e750a"}}],"hmos":[]},"files":[{"_id":{"$oid":"5c6ceda95916c77f71d9f571"},"uuid":"cc53c964-9440-413e-87b6-24fa86ccaa39","filename":"cc53c964-9440-413e-87b6-24fa86ccaa39.pdf","description":"files desc"}],"medicalData":{"_id":{"$oid":"5c6ceda95916c77f71d9f572"},"uuid":"d683a97b-f440-45a3-adef-b3df81be2fdc","complain":[""],"diagnosis":["A90 | Dengue fever [classical dengue]"],"remarks":"","dateExamined":{"$date":{"$numberLong":"1546358400000"}}},"loa":{"_id":null,"uuid":"3e929137-44c3-45f0-8cb5-fef1d83ff866","referenceId":""},"payment":{"_id":{"$oid":"5c6ceda95916c77f71d9f573"},"uuid":"6b0ed0d3-2993-4605-b4cd-421d84656921","phicBill":{"$numberDouble":"0.0"},"hospitalBill":{"$numberDouble":"0.0"},"total":{"$numberDouble":"500.0"},"balance":{"$numberDouble":"500.0"},"createdAt":{"$date":{"$numberLong":"1550642601512"}},"updatedAt":{"$date":{"$numberLong":"1550642601512"}}},"hmoRepresentative":"","remarks":"lack of documents","registryNumber":{"$numberLong":"0"},"approvedByUuid":"6fe1a2df-2a87-4b1e-a9b7-85a8b46eec19","soaNumber":"MBC-ILE-OUT-190000001","soaUuid":"6198678b-4254-4c89-a3d1-54e0366e751c","batchName":"BATCH-190000002","claimLogs":[{"_id":{"$oid":"5c6ceda95916c77f71d9f570"},"uuid":"96077dba-166b-47bd-a8d9-b06bee38e763","status":"PENDING","date":{"$date":{"$numberLong":"1550642601507"}},"userUuid":"c60d326e-0893-4718-a0e0-f64ac697dd2e","firstName":"Medicard","middleName":"","lastName":"Hospital"}],"messages":[],"hospital":{"$ref":"hospital","$id":{"$oid":"5bd80e4e36ec8c600f3e750a"}},"hmo":{"$ref":"hmo","$id":{"$oid":"5985c32870d8a672a291129d"}}}

陈述:

CREATE TABLE #Data (
    BulkColumn nvarchar(max)
)
BULK INSERT #Data 
FROM 'C:\demo_json\claims.json'
WITH (ROWTERMINATOR = '0x0A')

SELECT *
FROM #Data d
CROSS APPLY OPENJSON(d.BulkColumn) j

Notes:

您可以尝试使用基本的字符串转换来构建有效的JSON数组,但逐行读取文件应该是您的第一个选择:

SELECT *
FROM OPENROWSET (BULK 'C:\demo_json\claims.json', SINGLE_CLOB) d
CROSS APPLY OPENJSON('[' + REPLACE(d.BulkColumn, '}' + CHAR(10) + '{', '},{') + ']') j
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MS SQL Server 读取包含多个 JSON 对象的文件 的相关文章

  • 数组反序列化的Gson数组

    我有以下 JSON 结构 id 1 subcategories id 2 subcategories id 3 subcategories id 4 subcategories id 5 subcategories 类别的模型类 为简单起见
  • 如何在 Yii2 应用程序中显示多个选择下拉列表中的选定值?

    我正在研究 Yii2 我正在使用这样的自定义数组创建多个选择下拉菜单 在控制器文件中 all groups Groups find gt where group created by id gt orwhere new Expression
  • xQuery LIKE 运算符?

    有没有办法以与 SQL 相同的方式使用 XQuery 执行 LIKE 操作 我不想构造一些 startswith endswith 和 contains 表达式 我想要实现的目标的示例 for x in user where x first
  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 如何在oracle中获取表作为输出参数

    我正在尝试将 Oracle 过程调用的 out 参数强制转换为对象 它不起作用 因为 据我了解 我需要定义一个映射 它告诉方法如何转换它 如果地图为空或未正确填充 则它默认为 STRUCT 类型的对象 在我的情况下这是错误的 我已经构建了一
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 使用显式值进行 BigQuery 合并

    据我所知 BigQuery 支持合并两个表 目前 INSERT操作允许将显式值插入表中 例如 INSERT dataset Inventory product quantity VALUES top load washer 10 front
  • 尚未为此带有 SQL Server 的 DbContext .NET Core 配置数据库提供程序

    我一直用这个把头撞在墙上 并且一直在谷歌上搜索无济于事 我刚刚开始一个新的 ASP NET Core MVC 项目 我已将这两个包安装 更新为 2 2 0 Microsoft EntityFrameworkCore SqlServer Mi
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • Apache Camel 的 JsonMappingException

    我在骆驼路线上遇到以下异常 Caused by com fasterxml jackson databind JsonMappingException No serializer found for class org apache cam
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 后退按钮 (Chrome) 在 Play Framework 中获取 Json 而不是 HTML

    各位 我有一个 Web 应用程序 我在其中对同一资源的 JSON 和 HTML 表示重复使用了相同的路由 现在我们将其称为 foo details 该页面是从 bar details 链接的 因此 查看 bar details 您会看到链接
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • SQLite 中的累积求和值

    我正在尝试在 SQLite 中执行值的累积和 我最初只需要对一列求和并获得代码 SELECT t MyColumn SELECT Sum r KeyColumn1 FROM MyTable as r WHERE r Date lt t Da

随机推荐

  • 使用 Django RequestFactory 而不是表单数据的 POST 文档

    我想构建一个测试中间件的请求 但我不希望 POST 请求始终假设我正在发送表单数据 有没有办法设置request body根据生成的请求django test RequestFactory 即 我想做类似的事情 from django te
  • 自动将 Spring @RequestMapping 注释记录到一个位置?

    Javadoc 非常适合扫描所有源文件并创建 HTML 页面来查看它 我想知道是否有一个类似的工具可以遍历所有 Spring 控制器并收集所有用 RequestMapping 注释的方法并生成一个列出它们的 HTML 页面 有点像开发人员的
  • WKWebView LayoutConstraints 问题

    我创建了一个简单的网络视图应用程序 但有一个小问题我无法修复 它加载第一页没有问题 当我单击第一个输入时 程序崩溃 错误代码如下 2017 10 28 23 50 54 289690 0400 BFI Schools 68425 38856
  • SASL 握手期间出现意外的 METADATA 类型的 Kafka 请求

    我正在尝试使用 SASL Plain 将 Kafka Java 客户端连接到 Kafka 代理 但是当我尝试从生产者发送消息时 Kafka 服务器记录以下错误 2020 04 30 14 48 14 955 INFO SocketServe
  • 使用POSTMAN获取授权码-OAuth2.0

    我正在使用POSTMAN来测试OAuth2 0授权码流程对于 MSGraph 以下是相同的详细信息 验证码网址 https login microsoftonline com tenant id oauth2 authorize https
  • Tomcat环境中如何保存名称-值对?

    我们有一个 servlet 它需要某些变量 如密码 加密盐等 而不是永久保存在文件系统上 这就是我们目前所做的 总结 在初始化期间 Perl 脚本将 ReadMode 设置为 2 以屏蔽 stdout echo 提示用户输入变量 过滤已知文
  • 检查元素上是否有事件侦听器。没有 jQuery [重复]

    这个问题在这里已经有答案了 如果我像下面的代码一样使用内联函数 如何检查元素上是否有事件侦听器 因为我有一个函数可以调用该函数并添加事件侦听器 但它会导致重复的事件侦听器导致它触发函数两次 如果事件侦听器已经存在 我该如何检查它以便阻止它添
  • Rails 3.1 中的无表模型

    好像this http railscasts com episodes 193 tableless model该方法在 Rails 3 1 中不再适用 那么 有人有可行的解决方案吗 其实我已经找到这个了gist https gist git
  • 如何在编辑表单中预先填充collection_check_boxes?

    GitHub 仓库 https github com Yorkshireman mywordlist https github com Yorkshireman mywordlist 我用谷歌搜索了一下这个 我确信有一种方法 可能需要在 h
  • Python 字典中的最后一个键

    我很难弄清楚 Python 字典中最后一个键的语法是什么 我知道对于 Python 列表 人们可能会这样说来表示最后一个 list 1 我还知道可以获取字典的键列表 如下所示 dict keys 但是 当我尝试使用以下逻辑代码时 它不起作用
  • 在 ZF2 中发送带有附件的电子邮件

    如何在 zf2 中发送包含 text plain text html 和附件的电子邮件 我使用此代码通过 smtp 发送电子邮件 files this gt params gt fromFiles smtp new Zend Mail Tr
  • 如何使用 pyPdf 合并两个横向 pdf 页面

    我在使用 pyPdf 合并两个 PDF 文件时遇到问题 当我运行以下代码时 水印 第 1 页 看起来不错 但第 2 页已顺时针旋转 90 度 有什么想法吗 from pyPdf import PdfFileWriter PdfFileRea
  • 语法错误:无法分配给运算符

    def RandomString length distribution string for t in distribution t 1 length t 1 string return shuffle string 这会返回标题中描述的
  • Bash 错误:需要整数表达式

    在下面的部分中 您将看到我尝试在 UNIX 计算机上运行的 shell 脚本以及脚本 当我运行这个程序时 它给出了预期的输出 但它也给出了记录中显示的错误 可能是什么问题以及如何解决它 首先 脚本 usr bin bash while re
  • 如何在IE中使用border-radius.htc制作圆角

    如何在IE中使用border radius htc制作圆角 我在用边界半径 htc http www htmlremix com css curved corner border radius cross browser修复 IE 中的边框
  • JavaScript 中的 Google Analytics API

    我正在使用 Google Analytics Javascript 库让用户查看他们所在的特定页面的地理地图 然而 每次他们尝试这样做时 您都必须经过身份验证过程才能将我的数据显示在我的页面上 我怎样才能找到替代方案 我只想通过页面上的可视
  • 如何强制keras使用tensorflow GPU后端

    我知道这是最受欢迎的问题之一 但到目前为止 没有一个解决方案对我有用 我正在运行一个用以下语言编写的遗留代码tensorflow v1 13 1 and keras v2 2 4 我无法修改代码来运行最新的张量流版本 由于 keras 现已
  • 如何编译 Programmer Dvorak?

    我正在尝试编译开源项目程序员德沃夏克 http www kaufmann no roland dvorak 问题是它有点旧 并且不能使用当前版本的构建工具进行构建 您可以在我的网站上查看完整的源代码以及我在线所做的修改项目的 Google
  • sqlite alter table 在单个语句中添加多个列

    是否可以在 sqlite 的单个语句中更改表添加多个列 以下内容将不起作用 alter table test add column mycolumn1 text add column mycolumn2 text 不 您必须一次添加一个 请
  • 使用 MS SQL Server 读取包含多个 JSON 对象的文件

    我需要帮助在 MSSQL 中读取 JSON 文件 我有一个像这样的 json 格式 id oid 5c6ceb395916c77f71d9f531 uuid 8337df01 7d98 4cdd b5eb 7fafa88d3740 firs