我开发了一些以批处理模式运行的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)?
谢谢保罗
1条答案
按热度按时间dsekswqp1#
或者你可以使用powershell读取json转换成数据库,然后插入到sql server 2008中,这也可以工作。