在Azure Synapse中使用BULK OPENROWSET能否获取文件路径/URL?
在Azure Synapse Serverless SQL中返回JSON文件路径/URL
完全可以实现,你只需要在OPENROWSET的WITH子句中使用**filepath()或filename()**函数提取文件路径或名称,再将其作为额外列返回。
修改后的查询示例
SELECT TOP 100 full_file_url, someColumn1, someColumn2 FROM OPENROWSET( BULK 'https://********.dfs.core.windows.net/some/path/**', FORMAT = 'csv', FIELDTERMINATOR ='0x0b', FIELDQUOTE = '0x0b', ROWTERMINATOR = '0x0b' ) WITH ( doc NVARCHAR(MAX), -- 获取通配符匹配的文件路径片段(对应BULK路径中的**) relative_path VARCHAR(1000) AS filepath(1), -- 拼接生成完整文件URL full_file_url VARCHAR(1000) = CONCAT('https://********.dfs.core.windows.net/some/path/', filepath(1)) ) AS ROWS OUTER APPLY OPENJSON ( [doc] ) WITH ( [someColumn1] INT '$.someProperty1', [someColumn2] INT '$.someProperty2' ) AS someData
关键说明
filepath(n): 当BULK路径使用通配符(如**)时,filepath(1)返回与第一个通配符匹配的路径片段;若路径包含多个通配符(如*/**),可依次用filepath(2)获取后续片段。filename(): 若仅需返回文件名(不含路径),可在WITH子句中添加file_name VARCHAR(255) AS filename()。- 拼接完整URL时,需替换示例中的存储账户和基础路径为你实际的信息,确保路径拼接准确。
内容的提问来源于stack exchange,提问作者Allen Rufolo
相关产品推荐
相关产品推荐

