提问人:db0 提问时间:3/31/2023 更新时间:3/31/2023 访问量:78
优化从 MS SQL Server 读取和写入 CSV 文件
Optimize reading from MS SQL server and writing to CSV file
问:
我正在尝试使用 Python 脚本优化客户端的读/写任务。他们必须将数据放在 csv 文件中,即使我建议使用 parquet 文件。我的代码从 sql 数据库读取到 DataFrame,然后从 DataFrame 将其写入指定路径中的 csv。我已经尝试了所有类型的包,如 vaex、dask 和 pandas,希望使用列式存储更快地将数据写入 csv,但我没有注意到显着的性能改进。对于我的数据集的上下文,它大约有 200mb,包含大约 400 万行和 10 列。阅读大约需要 1:30 分钟,写作大约需要 30 分钟到 1 小时。有什么方法可以优化对 csv 的写入?
import pandas as pd
import pyodbc
import vaex
conn_str = (
r"DRIVER={SQL Server};"
r"SERVER=1SQL01\D1PRD;"
r"DATABASE=DB1;"
r"Trusted_Connection=yes;"
)
# create pyodbc connection
conn = pyodbc.connect(conn_str)
query = '''
select ID,RiskResultAssetID,PaymentDate,Balance,Interest,Principal,sum(interest+Principal) as Cashflow,isnull(WriteDown,0) as Writedown,
isnull(Liquidation,0) as Liquidation,isnull(IntShortFall,0) as IntShortFall from nier..RiskCashflows_BaseCase
where RiskResultAssetID in (select distinct id from nier..riskresultasset where riskresultsetid = 1167)
Group by ID,RiskResultAssetID,PaymentDate,Balance,Interest,Principal,WriteDown,Liquidation,IntShortFall
'''
# Load the data into a pandas DataFrame
df_pandas = pd.read_sql(query, conn)
# Close the database connection
conn.close()
# Convert the pandas DataFrame to a vaex DataFrame
df_vaex = vaex.from_pandas(df_pandas)
# Export the DataFrame to a CSV file
df_vaex.export_csv('basecaseCF.csv')
答: 暂无答案
评论