【问题标题】:Load bulk JSON data into SQL Server table将批量 JSON 数据加载到 SQL Server 表中
【发布时间】:2016-09-01 13:43:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我对这个问题的回答也应该适用于这里:stackoverflow.com/questions/37600180/…
  • 我确实查看了 simple-talk.com 上的 parseJSON 函数,我发现它不适合加载批量数据。我可能应该尝试一下并密切关注性能。
  • Phil Factor 的解析器看起来像一个 T-SQL 怪物。它可能会起作用,但它看起来很笨拙。我引用的主要链接是由比 Phil 更进一步的人编写的 CRL 程序集。

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


【解决方案1】:

我在 SSIS 2012 / SQL Server 2012 中完成了这项工作。要求是使用带有返回 json 的各种端点的 RESTful API。

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

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

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

  2. 脚本组件中的输出连接到各个目标表。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多