在Azure Synapse中如何对含JSON列的CSV进行查询处理?
处理CSV中的JSON列并实现查询(Azure Synapse)
完全可以实现,你可以借助Azure Synapse的OPENROWSET结合JSON解析函数来处理CSV里的JSON列,直接提取出需要的ID和Name字段。
场景1:JSON列是单个对象(每行对应一个JSON对象)
假设CSV里存储JSON的列名叫json_content,执行以下查询即可得到目标格式的结果:
SELECT JSON_VALUE(json_content, '$.ID') AS ID, JSON_VALUE(json_content, '$.Name') AS Name FROM OPENROWSET( BULK '你的CSV文件存储路径', FORMAT = 'CSV', PARSER_VERSION = '2.0' ) WITH ( -- 按CSV实际列结构定义,这里只示例关键的JSON列,其他列按需添加 其他列1 VARCHAR(50), json_content VARCHAR(MAX), 其他列2 INT ) AS csv_source
场景2:JSON列是对象数组(每行对应一个包含多个对象的JSON数组)
如果JSON列里存的是数组,需要用OPENJSON配合CROSS APPLY来展开数组:
SELECT parsed_data.ID, parsed_data.Name FROM OPENROWSET( BULK '你的CSV文件存储路径', FORMAT = 'CSV', PARSER_VERSION = '2.0' ) WITH ( json_content VARCHAR(MAX) ) AS csv_source CROSS APPLY OPENJSON(json_content) WITH ( ID INT '$.ID', Name VARCHAR(100) '$.Name' ) AS parsed_data
关键点说明
- 定义CSV列时,务必把JSON列设为
VARCHAR(MAX)或NVARCHAR(MAX),避免JSON内容因长度截断无法解析。 JSON_VALUE用于提取单个值,OPENJSON用于解析数组或复杂JSON结构,按需选择即可。
内容的提问来源于stack exchange,提问作者Joel Carvalho
相关产品推荐
相关产品推荐

