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

Python3如何将SQL列中<SOH>分隔的FIX数据拆分到CSV独立列

解决方案

核心修改逻辑

  • 给csv.writer指定分隔符为;,符合Excel读取分号分隔CSV的规则
  • 对查询到的每条FIX数据,先按(ASCII 0x01,Python中转义写为\x01)拆分字段
  • 可选对每个拆分后的字段取=后的内容,去掉标签前缀
  • 兼容处理行尾可能存在的注释内容

完整实现代码

基础版(保留标签前缀,符合基础期望输出)

import pyodbc
import csv

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=server;DATABASE=abc;UID=user;PWD=password')
# 补充原代码缺失的cursor初始化
cursor = cnxn.cursor()

sql = """select FIXData from table WHERE MessageTimestamp BETWEEN '2021-09-20 07:00:00' AND '2021-09-20 07:01:00';"""

rows = cursor.execute(sql)

with open(r'HOME/sqlresults.csv', 'w', newline='', encoding='utf-8') as csvfile:
    # 指定分号作为分隔符
    writer = csv.writer(csvfile, delimiter=';')
    for row in rows:
        fix_data = row[0]
        # 先去掉行尾可能的注释内容,再按SOH拆分字段
        valid_fix_part = fix_data.split('----')[0].strip()
        field_list = valid_fix_part.split('\x01')
        writer.writerow(field_list)

增强版(去掉标签前缀,符合额外需求)

import pyodbc
import csv

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=server;DATABASE=abc;UID=user;PWD=password')
cursor = cnxn.cursor()

sql = """select FIXData from table WHERE MessageTimestamp BETWEEN '2021-09-20 07:00:00' AND '2021-09-20 07:01:00';"""

rows = cursor.execute(sql)

with open(r'HOME/sqlresults.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    for row in rows:
        fix_data = row[0]
        valid_fix_part = fix_data.split('----')[0].strip()
        field_list = valid_fix_part.split('\x01')
        # 去掉每个字段的数字=前缀,过滤异常无效字段
        pure_value_list = [field.split('=', 1)[1] for field in field_list if '=' in field]
        writer.writerow(pure_value_list)

相关说明

  • 补充了原代码缺失的cursor初始化步骤,避免触发未定义变量报错
  • 自动过滤行尾的注释内容,不影响有效数据拆分
  • 全程仅使用Python标准库和你已在使用的pyodbc数据库连接库,无额外第三方依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:15:03