Мы получаем этот документ JSON и импортируем его в SQL Server 2016 с использованием компонента Kingswaysoft JSON Source.
{
"Program": "USRMI",
"Transaction": "GetUserInfo",
"Metadata": {
"Field": [
{
"@name": "USERID",
"@type": "A",
"@length": 10,
"@description": "User"
},
{
"@name": "COMPNO",
"@type": "N",
"@length": 3,
"@description": "Company"
},
]
},
"MIRecord": [
{
"NameValue": [
{
"Name": "USERID",
"Value": "JOEBLO88"
},
{
"Name": "COMPNO",
"Value": "999"
},
],
"RowIndex": 0
}
{
"NameValue": [
{
"Name": "USERID",
"Value": "JOEBLO55"
},
{
"Name": "COMPNO",
"Value": "998"
},
],
"RowIndex": 1
}
]
}
и иметь следующий столбец в таблице:
{"Name": "USERID","Value": "JOBLO88"}
{"Name": "COMPNO","Value": "988"}
{"Name": "USERID","Value": "JOBLO55"}
{"Name": "COMPNO","Value": "955"}
Я изо всех сил пытаюсь найти какой-либо ресурс по синтаксису, который можно использовать для преобразования его в структурированную таблицу столбцов, как показано ниже.
USERID COMPNO
====== ======
JOBLO88 988
JOBLO55 955
Я также не понимаю, о чем вы спрашиваете: нужно ли вам преобразовать первый JSON во вторую таблицу JSON а также, или у вас есть только второй JSON, и вам нужна таблица из этого, или какой-то захватывающий комбинация двух?
@JeroenMostert да, вы правильно, я немного подправил json, чтобы показать пример, и добавил это по ошибке
@JeroenMostert в настоящее время мы импортируем полный файл json, что может привести к созданию до 4 отдельных таблиц (Root, NameValue, Field, MIRecord массивы / таблицы объектов), чтобы мы могли сделать что-то интересное с любым из них или просто использовать вторую таблицу json (NameValue) для вывода новой таблицы в формате столбца, который нам нужен
У вас есть таблицы заранее и вы хотите поместить в них данные JSON или вы хотите сгенерировать таблицы на основе JSON? Последнее намного сложнее, чем первое, потому что T-SQL статически типизирован (в основном), поэтому вам понадобится сложный код, чтобы выяснить, какие столбцы должны быть в таблице (лучше всего это делать вне SQL Server). Разбор JSON выполняется с помощью OPENJSON
и JSON_QUERY
, но они не могут создавать динамические таблицы; структуру нужно уточнять заранее.
@JeroenMostert да, мы создадим все таблицы заранее, как вы говорите, динамически было бы кошмаром
Это недопустимый JSON. Запятые после последнего элемента в массиве не допускаются. Распространенная ошибка при уменьшении размера действующего JSON или, возможно, сломанный генератор. Вы можете использовать jsonlint.com, чтобы проверить такие вещи. SQL Server не может самостоятельно проанализировать или исправить недопустимый JSON, так что это имеет значение.