Чтение данных JSON для моего запроса на выборку в SQL Server - PullRequest
1 голос
/ 11 июня 2019

Я создаю проект автоматизации веб-тестирования testcafe с платформой на основе данных. Я использую NPM / node.jS / с кодом Visual Studio. У меня есть JSON-файл и SQL-запрос, я хочу указать, где предложение SQL-запроса указывает на данные JSON. Это очень ново для меня, любые предложения приветствуются.

Я видел, что есть библиотека NPM JSON-SQL Node.JS, но я не использовал ее, мне поможет любой пример.

JSON файл:

[
{
 venid='ABC'
 status='Open'
},
{
 venid='IGH'
 status='Closed'
},

SQL-запрос:

// running the query and query will take data from the json file
Select * 
From table 
Where VendorId = <jsondata> 
  and Inventorystatus = <jsonData>

1 Ответ

2 голосов
/ 12 июня 2019

Я не уверен, правильно ли я понимаю ваш вопрос, но если вы хотите проанализировать данные JSON с помощью SQL Server, вам следует использовать возможности JSON , которые представлены в SQL Server 2016.Большинство языков сценариев имеют достаточно возможностей для работы в формате JSON, поэтому вы должны передавать данные JSON непосредственно в SQL Server.

Далее приведен базовый пример, который вы можете использовать в качестве отправной точки (обратите внимание, что ваш JSON недействителен):

Таблица с данными:

CREATE TABLE #Data (
   VendorId nvarchar(3),
   InventoryStatus nvarchar(10)
)
INSERT INTO #Data 
   (VendorId, InventoryStatus)
VALUES
   (N'ABC', N'Open'),
   (N'ABC', N'Closed'),
   (N'IGH', N'Open'),
   (N'IGH', N'Closed')

T-SQL:

-- Valid JSON
-- [{"venid":"ABC", "status":"Open"}, {"venid":"IGH", "status":"Closed"}]
DECLARE @json nvarchar(max)

-- Read JSON from file. Try to send JSON data directly to SQL Server.
-- Additional permissions are needed to execute next statement.
--SELECT @json = BulkColumn
--FROM OPENROWSET (BULK '<Path>\JsonData.json', SINGLE_CLOB) as j

-- Read JSON from variable
SELECT @json = N'[{"venid":"ABC", "status":"Open"}, {"venid":"IGH", "status":"Closed"}]'

-- Use JSON data in a statement
SELECT d.*
FROM #Data d
JOIN OPENJSON(@json) WITH (
    VendorId nvarchar(3) '$.venid',
    InventoryStatus nvarchar(10) '$.status'
) j ON (d.VendorId = j.VendorId) AND (d.InventoryStatus = j.InventoryStatus)

Вывод:

---------------------------
VendorId    InventoryStatus
---------------------------
ABC         Open
IGH         Closed
...