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

如何将多段SQL查询结果分别导出至指定路径的CSV文件?

批量处理多段SQL查询并导出CSV的解决方案

直接把查询语句与对应输出文件名配对,通过循环批量处理即可,这样既简洁又方便后续扩展更多查询。修改后的代码如下:

import pandas as pd
import os

# 定义查询语句与对应输出文件名的配对列表
query_file_pairs = [
    (
        """
        SELECT * FROM [TN_TN].[table1]
        """,
        "table1.csv"
    ),
    (
        """
        SELECT * FROM [TN_TN].[table2]
        """,
        "table2.csv"
    )
]

save_path = 'O:/Bonus/test'

# 循环处理每一组查询和文件
for query, file_name in query_file_pairs:
    # 执行SQL查询
    data = pd.read_sql(query, cnxn)
    # 直接用pandas的to_csv写入文件,省去手动操作文件流的步骤
    full_path = os.path.join(save_path, file_name)
    data.to_csv(full_path, sep=';', index=False)

关键改动说明:

  • 复用逻辑:把查询语句和目标文件名打包成列表,通过循环批量执行重复逻辑,避免冗余代码。
  • 简化文件操作:直接使用pandas.DataFrame.to_csv()写入文件,不需要先把CSV转成字符串再手动写入,代码更简洁且不易出错(自动处理文件关闭)。
  • 扩展性强:后续要新增查询时,只需在query_file_pairs列表里添加新的元组即可,无需修改循环逻辑。

如果需要保留原代码中手动操作文件的写法,也可以把文件写入部分封装成函数,再循环调用:

import pandas as pd
import os

def export_query_to_csv(query, file_name, save_path, cnxn):
    data = pd.read_sql(query, cnxn)
    cs = data.to_csv(sep=';', index=False)
    completeName = os.path.join(save_path, file_name)
    with open(completeName, "w") as file1:
        file1.write(cs)

# 定义查询与文件配对
query_file_pairs = [
    ("""SELECT * FROM [TN_TN].[table1]""", "table1.csv"),
    ("""SELECT * FROM [TN_TN].[table2]""", "table2.csv")
]

save_path = 'O:/Bonus/test'

# 循环导出
for query, file_name in query_file_pairs:
    export_query_to_csv(query, file_name, save_path, cnxn)

这里用with语句替代手动close(),能确保文件正确关闭,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:20:26