如何为Keboola Components添加XML2CSV Processor并转换Snowflake表中XML文件?
解决XML转JSON/CSV的两种场景方案
一、Keboola中通过API调用XML2CSV Processor组件
你提到的kds-team.processor-xml2csv是Keboola的社区组件,默认组件库可能未加载,先试试手动添加:在Keboola Connection界面的Components市场搜索该组件ID,找到后添加到你的项目中。如果确需通过API实现,按以下步骤操作:
- 获取Keboola API Token:在项目的Settings > API Tokens中生成具备
component_run、storage相关权限的token。 - 触发组件运行的API请求:
发送POST请求到https://connection.keboola.com/v2/storage/buckets/{你的bucket ID}/jobs,请求头带上X-StorageApi-Token: {你的API Token},请求体配置示例如下:
该配置会先完成XML转JSON的中间输出,再生成最终CSV文件。你可根据组件功能调整XML节点路径、CSV分隔符等参数。{ "component": "kds-team.processor-xml2csv", "configData": { "parameters": { "xmlPath": "/in/files/input.xml", "convertToJson": true, "jsonOutputPath": "/out/files/intermediate.json", "csvOutputPath": "/out/files/final.csv" }, "input": { "files": [ { "source": "{输入bucket名}/input.xml", "destination": "input.xml" } ] }, "output": { "files": [ { "source": "intermediate.json", "destination": "{输出bucket名}/intermediate.json" }, { "source": "final.csv", "destination": "{输出bucket名}/final.csv" } ] } } }
二、Snowflake表中XML文件的转换
Snowflake自带XML解析函数,无需额外组件即可完成转换,分两种场景处理:
1. 直接将XML解析为CSV结构
假设你的Snowflake表XML_TABLE包含ID和XML_CONTENT(XML类型或字符串类型)列,先解析XML为关系型数据,再导出为CSV:
-- 解析XML列并展开为结构化表 WITH parsed_xml AS ( SELECT ID, x.* FROM XML_TABLE, XMLTABLE( '/root/items/item' PASSING TRY_PARSE_XML(XML_CONTENT) COLUMNS item_id INT PATH 'id', item_name STRING PATH 'name', item_price FLOAT PATH 'price' ) x ) -- 导出CSV到指定阶段或外部存储 COPY INTO '@my_stage/output.csv' FROM parsed_xml FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY '"');
2. 先转JSON再生成CSV
如果需要先得到JSON格式中间产物,再导出CSV,可使用TO_JSON函数:
WITH xml_to_json AS ( SELECT ID, TO_JSON(XML_CONTENT) AS json_data FROM XML_TABLE ), json_to_table AS ( SELECT ID, j.* FROM xml_to_json, TABLE(FLATTEN(INPUT => PARSE_JSON(json_data):root:items)) f, TABLE(FLATTEN(INPUT => f.value)) j ) COPY INTO '@my_stage/final.csv' FROM json_to_table FILE_FORMAT = (TYPE = CSV);
内容的提问来源于stack exchange,提问作者CataGata
相关产品推荐
相关产品推荐

