如何用Python匹配两个文件的值并生成替换后的SQL插入语句文件
实现方案
核心思路
- 首先将values_list.txt中的键值对解析为Python字典,方便后续占位符查找替换
- 对字典的key按长度倒序排序,避免短key(如val1)先匹配长key(如val111)前缀导致替换错误
- 逐行处理SQL语句,替换所有对应占位符
- 将替换后的内容写入最终的输出SQL文件
完整实现代码
# 读取键值对文件并生成映射字典 valsfile = open('values_list.txt') valscontents = valsfile.read() valsline = valscontents.splitlines() valsfile.close() val_map = {} for line in valsline: # 按第一个逗号分割,避免值内包含逗号导致解析错误 key_part, value_part = line.split(',', 1) val_map[key_part.strip()] = value_part.strip() # 读取SQL模板文件 sqlfile = open('insert_values.sql') sqlcontents = sqlfile.read() sqlline = sqlcontents.splitlines() sqlfile.close() # 逐行替换占位符 output_sql = [] # 对key按长度倒序排序,长key优先替换,避免前缀匹配错误 sorted_keys = sorted(val_map.keys(), key=lambda x: len(x), reverse=True) for sql_line in sqlline: processed_line = sql_line for key in sorted_keys: processed_line = processed_line.replace(key, val_map[key]) output_sql.append(processed_line) # 写入最终结果文件 with open('final_insert.sql', 'w', encoding='utf-8') as out_file: out_file.write('\n'.join(output_sql))
优化建议
你也可以将文件读取逻辑改为with上下文管理器写法,无需手动关闭文件,更安全可靠:
# 示例:用with读取键值对文件 with open('values_list.txt', 'r', encoding='utf-8') as f: valsline = f.read().splitlines()
内容的提问来源于stack exchange,提问作者smcodemeister
相关产品推荐
相关产品推荐

