我一直在来回走动,但被难住了。我有一个文件,其中包含跨多个对象的多个 JSON 行。
我在下面放了两行。
{
"mental_health_act_legal_status":
[
{"legal_status_classification": "16", "start_time": "16:32", "expiry_date": "20171014", "expiry_time": "20:28", "start_date": "20170912"},
{"legal_status_classification": "07", "start_time": "01:31", "expiry_date": "20170922", "expiry_time": "17:53", "start_date": "20170820"},
{"legal_status_classification": "36", "start_time": "00:25", "expiry_date": "20170909", "expiry_time": "18:08", "start_date": "20170801"},
{"legal_status_classification": "18", "start_time": "18:26", "expiry_date": "20170801", "expiry_time": "12:40", "start_date": "20170724"},
{"legal_status_classification": "18", "start_time": "10:26", "expiry_date": "20170801", "expiry_time": "03:07", "start_date": "20170623"},
{"legal_status_classification": "18", "start_time": "04:11", "expiry_date": "20170621", "expiry_time": "12:51", "start_date": "20170601"},
{"legal_status_classification": "17", "start_time": "07:54", "expiry_date": "20170605", "expiry_time": "05:04", "start_date": "20170512"},
{"legal_status_classification": "31", "start_time": "02:41", "expiry_date": "20170520", "expiry_time": "11:14", "start_date": "20170920"},
{"legal_status_classification": "03", "start_time": "23:17", "expiry_date": "20170504", "expiry_time": "06:29", "start_date": "20170925"},
{"legal_status_classification": "05", "start_time": "17:41", "expiry_date": "20170403", "expiry_time": "01:23", "start_date": "20170331"},
{"legal_status_classification": "36", "start_time": "05:05", "expiry_date": "20170322", "expiry_time": "14:30", "start_date": "20170312"},
{"legal_status_classification": "03", "start_time": "03:45", "expiry_date": "20170310", "expiry_time": "11:56", "start_date": "20170213"},
{"legal_status_classification": "01", "start_time": "14:03", "expiry_date": "20170201", "expiry_time": "06:02", "start_date": "20170118"},
{"legal_status_classification": "09", "start_time": "07:07", "expiry_date": "20170121", "expiry_time": "22:15", "start_date": "20170111"}
],
"system": {"record_id": "1484925971009999954", "provider_record_id": "RTD 0167983 0000046", "sus_version": "20170927072844117", "spell_id": "1484925971009999954"}
}
{
"mental_health_act_legal_status":
[
{"legal_status_classification": "15", "start_time": "18:51", "expiry_date": "20170919", "expiry_time": "23:04", "start_date": "20170904"},
{"legal_status_classification": "19", "start_time": "06:11", "expiry_date": "20170908", "expiry_time": "09:17", "start_date": "20170818"},
{"legal_status_classification": "15", "start_time": "20:36", "expiry_date": "20170818", "expiry_time": "07:44", "start_date": "20170723"},
{"legal_status_classification": "01", "start_time": "16:12", "expiry_date": "20170809", "expiry_time": "21:25", "start_date": "20170718"},
{"legal_status_classification": "09", "start_time": "06:06", "expiry_date": "20170707", "expiry_time": "18:10", "start_date": "20170615"},
{"legal_status_classification": "07", "start_time": "11:53", "expiry_date": "20170625", "expiry_time": "14:09", "start_date": "20170527"},
{"legal_status_classification": "19", "start_time": "07:13", "expiry_date": "20170529", "expiry_time": "00:39", "start_date": "20170503"},
{"legal_status_classification": "35", "start_time": "16:01", "expiry_date": "20170521", "expiry_time": "07:18", "start_date": "20170912"},
{"legal_status_classification": "35", "start_time": "02:45", "expiry_date": "20170430", "expiry_time": "06:47", "start_date": "20170902"},
{"legal_status_classification": "03", "start_time": "19:51", "expiry_date": "20170410", "expiry_time": "18:46", "start_date": "20170319"},
{"legal_status_classification": "13", "start_time": "20:58", "expiry_date": "20170310", "expiry_time": "10:52", "start_date": "20170220"},
{"legal_status_classification": "02", "start_time": "13:11", "expiry_date": "20170217", "expiry_time": "00:42", "start_date": "20170127"},
{"legal_status_classification": "15", "start_time": "18:23", "expiry_date": "20170209", "expiry_time": "20:03", "start_date": "20170120"},
{"legal_status_classification": "07", "start_time": "00:59", "expiry_date": "20170119", "expiry_time": "12:33", "start_date": "20161231"}
],
"system": {"record_id": "1484925971009999916", "provider_record_id": "RTD 0167983 0000084", "sus_version": "20170927072844117", "spell_id": "1484925971009999916"}
}
如果我使用openjson
语法,我可以让它加载我想要的部分到其中一个表,但文件中只加载了一行;但我需要浏览整个文件。
然后我从这里的一篇文章中查看了一个 .fmt 文件,但从到目前为止我可以看出的是 JSON 行都必须进入同一个表。您不能让多个对象进入该行中的多个表,或者它不知道在哪里拆分它们。
我将其导入 SQL 的代码,仅包含两个表,涵盖系统和心理健康法案的法律状态:
DECLARE @JSON NVARCHAR(MAX)
SET @JSON = (SELECT J.*
FROM OPENROWSET
(BULK 'C:\Users\report.jsonl', SINGLE_CLOB)
AS j)
SELECT * FROM OPENJSON (@JSON, '$.system')
WITH ([SUS_VERSION] VARCHAR (255) '$.sus_verion',
[SPELL_ID] VARCHAR (255) '$.spell_id',
[RECORD_ID] VARCHAR (255)'$.record_id',
[PROVIDER_RECORD_ID] VARCHAR (255) '$.provider_record_id'
)
SELECT [record_id], [legal_status_classification], [start_date], [start_time], [expiry_date], [expiry_time]
FROM OPENROWSET (BULK 'C:\Users\report.jsonl', SINGLE_CLOB) AS j
CROSS APPLY OPENJSON (BulkColumn, '$.mental_health_act_legal_status')
WITH (
[legal_status_classification] VARCHAR (255),
[start_time] VARCHAR (255),
[expiry_date] VARCHAR (255),
[expiry_time] VARCHAR (255),
[start_date] VARCHAR (255)
)
CROSS APPLY OPENJSON (BulkColumn, '$.system')
WITH (
[record_id] VARCHAR (255)
)
有没有人能够提供建议或帮助或请看什么路线。
谢谢