如何解析含竖线分隔内容的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
相关产品推荐
相关产品推荐

