Database/MSSQL

JOSON 파일 테이블에 넣기

sonny.kim 2019. 8. 30. 18:54
-- DROP TABLE #TEMP
DECLARE @cnt INT -- 아이템 카운트
DECLARE @qry VARCHAR(MAX) 
DECLARE @i INT = 0

--1 . json파일을 #temp 테이블에 입력
SELECT BulkColumn INTO #TEMP
FROM OPENROWSET (BULK 'D:\YOU.json', SINGLE_CLOB) as j;

--2. items count
SELECT @cnt= COUNT(Items.kind)
FROM #TEMP
CROSS APPLY OPENJSON (BulkColumn, N'$.items')
  WITH (
    kind varchar(100))
      AS items

WHILE(@i < @cnt)
BEGIN
SET @qry = '
INSERT INTO YOUR_TABLE
SELECT 
	JSON_VALUE(BulkColumn, ''$.kind''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].kind''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].id.kind''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.publishedAt''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.channelId''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.title''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.description''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.default.url''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.default.width''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.default.height''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.medium.url''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.medium.width''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.medium.height''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.high.url''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.high.width''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.thumbnails.high.height''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.channelTitle''),
	JSON_VALUE(BulkColumn, ''$.items[' + CONVERT(VARCHAR,@i) + '].snippet.liveBroadcastContent'')
FROM #TEMP'
PRINT @qry
SET @i = @i + 1
END