为 JSON 数组插入

INSERT INTO for JSON array

我得到一些文本文件,其中某些列填充有 JSON 数组。我将文件导入暂存 table。我想使用 INSERT INTO 将文件放入另一个 table,并将 JSON 数组列解析为两列。

我需要一个名为 'military_focus' 的列和另一个名为 'health_insurance_focus' 的列,它们将填充 'true' 或 'false'。使用此 SELECT 语句显示我需要的数据。

    SELECT
[network_id]
[network_name],
[network_type],
[service_type_ids],
JSON_VALUE(focus,'$.military_focus') AS military_focus,
JSON_VALUE(focus,'$.health_insurance_focus') AS health_insurance_focus,
[created_at],
[updated_at],
[LoadDt],
[FileNM]
FROM
[Med_Stage].[Provider].[networks]

我正在尝试将其与 INSERT INTO 一起使用,以将其放入另一个 table 中并包含适当的列。我收到一个错误,指出 SELECT 值与 INSERT 列的数量不匹配,因为我要从 Staging table 中的一个 'focus' 列转到目标 [=34] 中的两个列=].

      INSERT INTO  [Med].[Provider].[networks]
  (
    [network_id],
    [network_name],
    [network_type],
    [service_type_ids],
    [military_focus],
    [health_insurance_focus],
    [created_at],
    [updated_at],
    [LoadDt],
    [FileNM]
      )

    SELECT
    [network_id]
    [network_name],
    [network_type],
    [service_type_ids],
    JSON_VALUE(focus,'$.military_focus') AS military_focus,
    JSON_VALUE(focus,'$.health_insurance_focus') AS health_insurance_focus,
    [created_at],
    [updated_at],
    [LoadDt],
    [FileNM]
    FROM
    [Med_Stage].[Provider].[networks]

是的,fiddle就够了,能马上测试突出问题。

你只是在第一列后少了一个逗号

SELECT
[network_id], /* <-- missing comma*/
[network_name],
[network_type],
[service_type_ids],
JSON_VALUE(focus,'$.military_focus') AS military_focus,
JSON_VALUE(focus,'$.health_insurance_focus') AS health_insurance_focus,
[created_at],
[updated_at],
[LoadDt],
[FileNM]
FROM
[Med_Stage].[Provider].[networks]