sql-server - 将批量 JSON 数据加载到 SQL Server 表中

标签 sql-server json ssis sql-server-2014 etl

在低于 2016 的 SQL Server 版本中,将文件中的大量 JSON 数据加载到数据库表中的标准方法是什么?

我知道 SQL Server 2016 中引入了 OPENJSON() 函数。但是,我仅限于使用 SQL Server 2014。

最好的方法是使用 SQL Server Integration Services (SSIS) 导入数据,但没有内置的连接器或源组件可供使用。

我尝试使用 SSIS JSON Component以此目的。显然,从性能角度来看这并不好。

还有其他方法可以将 JSON 批量加载到 SQL 中吗?

最佳答案

我已在 SSIS 2012/SQL Server 2012 中完成此操作。要求是使用具有返回 json 的各种端点的 RESTful API。

  1. 数据流中,创建一个脚本组件。它很可能是Type = Source,因为您将从中生成带有输出列OutPuts

enter image description here

  • 为您将从 JSON 中提取的各种字段/数据项创建各种 OutPuts 和 OutPut 列。通常这是几个表,如下所示。
  • enter image description here

  • 脚本组件CreateNewOutputRows()重写方法中,将JSON数据反序列化为C#类。我用http://json2csharp.com/ stub 类,然后在特殊情况下根据需要修复它,例如 json 是否具有键的 ID 值,而不是键名等。我使用 Newtonsoft.Json 将 json 反序列化为类实例/列表等。将行添加到您在步骤 2 中设置的相关输出缓冲区。

  • 脚本组件输出连接到各个目标表。

  • 就是这样!你已经完成了。

    关于sql-server - 将批量 JSON 数据加载到 SQL Server 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273210/

    相关文章:

    c# - SELECT 语句不返回任何内容

    sql - 如何在分页前获取不同行的总数?

    mysql - 使用 Laravel 将 JSON 转换为 MySQL 列中的数组

    python - 将 json 字符串转换为 python 对象

    sql-server - 参数在部署的 SSIS 包中不可见

    c# - 如何解决 "Procedure or function has too many arguments specified"异常?

    c - C中的机器人访问API不起作用,为什么?

    sql - 在SSIS中导入已合并单元格的Excel

    sql-server - SSDT-BI 可以与 SQL Server 2008 R2 一起使用吗?

    sql-server - 恢复后的 Datazen 服务器未准备好