gpt4 book ai didi

sql - 通过@parameter 将文件传递给 OPENROWSET BULK json 查询,SQL 2016

转载 作者:行者123 更新时间:2023-12-05 06:30:36 24 4
gpt4 key购买 nike

在 sql 2016 中这有效:

SELECT @JSONFileData = BulkColumn FROM OPENROWSET (BULK  
'C:\Temp\Students_2015.json', SINGLE_CLOB) as JSON

这不是:

SELECT @JSONFileData = BulkColumn FROM OPENROWSET (BULK  ' + @FullFile + ' , 
SINGLE_CLOB) as JSON

Message: Cannot bulk load. The file " + @FullFile + " does not exist.

@FullFile = 'C:\Temp\Students_2015.json'

我在 Foreach 循环容器中使用执行 SQL 任务,在一个将传入许多文件的 SSDT 项目中。如何格式化我的 SQL 查询以便我可以通过参数传递文件?

谢谢,

凯文

这是我的测试:

DECLARE @Year varchar(4)
SET @Year = '2015'

DECLARE @Path varchar(50)
SET @Path= 'C:\Temp\'

DECLARE @File varchar(10)
SET @File= 'Students_'

DECLARE @FullFile varchar(50)
SET @FullFile= @Path+@File+@Year+'.json'

Declare @JSONFileData varchar(max)

SELECT @JSONFileData = BulkColumn FROM OPENROWSET (BULK
'C:\Temp\Students_2015.json', SINGLE_CLOB) as JSON

SELECT @JSONFileData = BulkColumn FROM OPENROWSET (BULK ' + @FullFile + ' ,
SINGLE_CLOB) as JSON

最佳答案

动态 SQL 对我有用。此外,由于我正在解析一个 JSON 文件,我需要在 '$.xxx' json 元素周围添加一组额外的 '' 才能成功查询该文件。这是我的工作示例:

DECLARE @FullFile varchar(50)
SET @FullFile = 'C:\Temp\Students_2016.json'

DECLARE @sqlUpdate varchar(max)

SET @sqlUpdate =
'Declare @JSONFileData varchar(max)
SELECT @JSONFileData = BulkColumn FROM OPENROWSET (BULK N''' + @FullFile + ''',
SINGLE_CLOB) as JSON

INSERT INTO Student_Stage (
FirstName
)
SELECT
JSON_VALUE(sourceTable.value, ''$.FirstName'') AS [FirstName]
FROM OPENJSON(@JSONFileData, ''$.Items'') AS sourceTable'
EXEC (@sqlupdate)

关于sql - 通过@parameter 将文件传递给 OPENROWSET BULK json 查询,SQL 2016,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com