如何将INSERT语句按列与值对齐格式化?求对应工具推荐
实现INSERT语句值对齐的可行方案
以下几种方式可以实现你需要的这种列对齐格式:
VS Code 插件(SQL Formatter)
安装SQL Formatter插件后,进入插件设置,找到「Align Values」相关配置项,开启该功能并调整缩进、对齐宽度参数,就能让INSERT语句中的值按列对齐,匹配你想要的格式。JetBrains系列IDE(IntelliJ IDEA、DataGrip)
这类IDE自带专业SQL格式化能力,打开Settings -> Editor -> Code Style -> SQL,找到INSERT语句的格式化规则,开启「Align values in INSERT clauses」选项,还能自定义每列的对齐间距,完全可以实现你要的对齐效果。自定义Python脚本
如果不想依赖工具,自己写个简单脚本也能快速处理:def format_insert(sql): # 拆分INSERT主体和VALUES部分 insert_part, values_part = sql.split('VALUES') insert_part = insert_part.strip() # 提取列名列表 cols_start = insert_part.find('(') + 1 cols_end = insert_part.find(')') cols = [c.strip().strip('[]') for c in insert_part[cols_start:cols_end].split(',')] # 提取所有值组 values_groups = values_part.strip().rstrip(';').split('),(') values_groups = [v.strip('()').split(',') for v in values_groups] # 计算每列值的最大宽度 col_widths = [] for col_idx in range(len(cols)): max_len = max(len(str(val[col_idx].strip())) for val in values_groups) col_widths.append(max_len) # 重新拼接格式化后的语句 formatted = f"{insert_part}\n VALUES (" # 处理第一个值组 first_aligned = [val.strip().rjust(col_widths[i]) for i, val in enumerate(values_groups[0])] formatted += ', '.join(first_aligned) + '),' # 处理剩余值组 for vals in values_groups[1:]: aligned_vals = [val.strip().rjust(col_widths[i]) for i, val in enumerate(vals)] formatted += f"\n ({', '.join(aligned_vals)})," # 收尾,移除最后一个多余逗号并添加分号 formatted = formatted.rstrip(',') + ';' return formatted # 测试示例 original_sql = "INSERT tablename ([column1], [column2], [column3], [column4], [column5]) VALUES (2,1,11,NULL,4), (2,1,11,NULL,4), (2,1,11,NULL,4);" print(format_insert(original_sql))运行脚本后就能输出你需要的对齐格式。
内容的提问来源于stack exchange,提问作者Guilherme Girardi
相关产品推荐
相关产品推荐

