打开SQL Server 2008中的JSON用法

ckx4rj1h  于 2023-04-22  发布在  SQL Server
关注(0)|答案(1)|浏览(313)

我开发了一些以批处理模式运行的SQL脚本。它们在SQL Server 2017(我的测试/开发环境)中运行得很好。我的客户现在希望我将其移植到SQL Server 2008(我知道永远不应该倒退,但客户不想为2017付费)。
我的脚本看起来像:

DECLARE @CJSON nvarchar(max)

SELECT @CJSON = BulkColumn
FROM OPENROWSET (BULK 'C:\Users\PaulB\desktop\Sched_Data\schedam.txt', SINGLE_CLOB) as j

INSERT INTO Schedules (SchedID, Type, JobNo, TotalHrs, EmployeeID, SchedDate, StartTime, FinishTime)
    SELECT
        SchedID, Type, JobNo, TotalHrs, EmployeeID, SchedDate, StartTime, FinishTime
    FROM
        OPENJSON(@CJSON)
        WITH (SchedID NUMERIC N'$.ID', 
              Type CHAR(15) N'$.Type', 
              JobNo NVARCHAR(5) N'$.Reference', 
              TotalHrs DEC(4,2) N'$.TotalHours', 
              SchedDate DATE N'$.Date',  
              EmployeeID NUMERIC(6) N'$.Staff.ID', 
              Blocks NVARCHAR(MAX) N'$.Blocks' as JSON)
    OUTER APPLY
        OPENJSON(Blocks); 
        WITH (StartTime DATETIMEOFFSET N'$.ISO8601StartTime', 
              FinishTime DATETIMEOFFSET N'$.ISO8601EndTime' )
go

该脚本读取一个包含JSON数据的文本文件,并将其插入到一个名为schedules的表中。运行该脚本时,它会在SQL Server 2008中的WITH OPENJSON语句上挂起,但在SQL Server 2017中非常完美。
你有什么建议来实现这一目标(除了升级到SQL Server 2017)?
谢谢保罗

dsekswqp

dsekswqp1#

或者你可以使用powershell读取json转换成数据库,然后插入到sql server 2008中,这也可以工作。

相关问题