You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Keboola Components添加XML2CSV Processor并转换Snowflake表中XML文件?

解决XML转JSON/CSV的两种场景方案

一、Keboola中通过API调用XML2CSV Processor组件

你提到的kds-team.processor-xml2csv是Keboola的社区组件,默认组件库可能未加载,先试试手动添加:在Keboola Connection界面的Components市场搜索该组件ID,找到后添加到你的项目中。如果确需通过API实现,按以下步骤操作:

  1. 获取Keboola API Token:在项目的Settings > API Tokens中生成具备component_run、storage相关权限的token。
  2. 触发组件运行的API请求:
    发送POST请求到https://connection.keboola.com/v2/storage/buckets/{你的bucket ID}/jobs,请求头带上X-StorageApi-Token: {你的API Token},请求体配置示例如下:
    {
      "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"
            }
          ]
        }
      }
    }
    
    该配置会先完成XML转JSON的中间输出,再生成最终CSV文件。你可根据组件功能调整XML节点路径、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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:47:18