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

如何解析含竖线分隔内容的XML数据并插入ins_data数据库表

解析XML并批量插入数据库实现方案

嘿,我来帮你搞定这个需求!咱们一步步来,从解析XML到生成SQL插入语句,最后验证结果:

1. 先处理XML解析

首先注意:你给出的XML片段缺少根节点,解析的时候会报错,所以第一步要给它套个根标签(比如<Root>)。接下来,我们要把每个<Content>里的竖线分隔字符串拆分成对应字段:

  • 每个Content的格式是 TYPE|VNO|F_DATE|F_NO|F_CNO|,最后那个竖线会分割出空值,我们只取前5个部分就行。

2. 生成批量INSERT语句

用批量插入比单条插效率高太多了,这里我用Python做示例(你也可以用其他语言,逻辑是一样的):

示例代码(带XML解析+SQL生成)

import xml.etree.ElementTree as ET

# 补全根节点的XML内容
xml_content = """
<Root>
<Status>SUCCESS</Status>
<Count>7</Count>
<Data>
<Content>S|123|03011990|5236158|19901254189684|</Content>
<Content>S|456|02011991|2584959|19916584159385|</Content>
</Data>
</Root>
"""

# 解析XML提取所有Content节点
root = ET.fromstring(xml_content)
content_nodes = root.findall(".//Data/Content")

# 整理插入参数
insert_values = []
for node in content_nodes:
    # 拆分字符串,取前5个有效字段
    fields = node.text.strip().split("|")[:5]
    # 转成SQL兼容的格式
    insert_values.append(f"('{fields[0]}', '{fields[1]}', '{fields[2]}', '{fields[3]}', '{fields[4]}')")

# 拼接完整的INSERT语句
final_sql = f"INSERT INTO ins_data(TYPE,VNO,F_DATE,F_NO,F_CNO) VALUES {', '.join(insert_values)};"
print(final_sql)

运行后得到的SQL语句

这段代码会输出:

INSERT INTO ins_data(TYPE,VNO,F_DATE,F_NO,F_CNO) VALUES ('S', '123', '03011990', '5236158', '19901254189684'), ('S', '456', '02011991', '2584959', '19916584159385');

3. 执行SQL并验证结果

把上面生成的SQL在你的数据库里执行,然后跑查询语句:

SELECT TYPE, VNO, F_DATE, F_NO, F_CNO FROM ins_data;

就能得到你想要的结果:

S 123 03011990 5236158 19901254189684
S 456 02011991 2584959 19916584159385

重要提醒:避免SQL注入

如果你的字段值可能包含单引号、特殊字符,手动拼接SQL会有注入风险,推荐用参数化查询。比如用Python的pymysql做MySQL插入的示例:

import pymysql

# 连接数据库(替换成你的数据库信息)
conn = pymysql.connect(host="你的主机", user="用户名", password="密码", db="数据库名")
cursor = conn.cursor()

# 准备参数列表(用元组存储每个行的字段值)
params = []
for node in content_nodes:
    fields = node.text.strip().split("|")[:5]
    params.append(tuple(fields))

# 用executemany执行批量插入
sql_template = "INSERT INTO ins_data(TYPE,VNO,F_DATE,F_NO,F_CNO) VALUES (%s, %s, %s, %s, %s);"
cursor.executemany(sql_template, params)

# 提交事务并关闭连接
conn.commit()
conn.close()

这种方式既安全又不用手动处理字符转义,是生产环境的首选。

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:30:56