Вставка JSON в TSQL - PullRequest
       2

Вставка JSON в TSQL

0 голосов
/ 03 октября 2019

Я хотел бы вставить JSON в таблицу SQL, используя TSQL. Сам JSON содержит имена столбцов и объекты строк

{
  "content": {
    "columns": [
      {
        "name": "col1",
        "dataType": "float"
      },
      {
        "name": "col2",
        "dataType": "float"
      }
    ],
    "rows": [
      [
        0,
        2
      ],
      [
        4,
    5
      ]
    ]
  }
}

Это ожидаемый результат. Таблица может быть определена заранее, но порядок в JSON не всегда может быть одинаковым

col1,col2
0,2
4,5

1 Ответ

0 голосов
/ 03 октября 2019

Если это SQL-Server 2016+, вы можете использовать встроенную поддержку JSON следующим образом:

DECLARE @YourJson NVARCHAR(MAX)=
N'{
  "content": {
    "columns": [
      {
        "name": "col1",
        "dataType": "float"
      },
      {
        "name": "col2",
        "dataType": "float"
      }
    ],
    "rows": [
      [
        0,
        2
      ],
      [
        4,
    5
      ]
    ]
  }
}';

- объявить или создать целевую таблицу

DECLARE @predefinedTable TABLE(col1 FLOAT, col2 FLOAT);

- чтениезначения из JSON

INSERT INTO @predefinedTable(col1,col2) 
SELECT TheJsonsContent.col1
      ,TheJsonsContent.col2  
FROM OPENJSON(@YourJson,'$.content.rows')
     WITH(col1 FLOAT '$[0]'
         ,col2 FLOAT '$[1]') TheJsonsContent;

- Проверьте результат

SELECT * FROM @predefinedTable;

Идея вкратце:

Мы используем OPENJSON, чтобы получить массив в $.content.rows. Затем мы используем WITH -класс, чтобы получить значения по их положению (начиная с нуля).

Подсказка: если вы используете другую СУБД или более низкую версию, это будет сложно ... В зависимости отсложность JSON, вам нужно много разбирать ... В этом случае я бы предложил использовать другой инструмент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...