向SQL Server写入内容的Polars与Pandas(SQL Alchemy)

aor9mmx1  于 2023-03-06  发布在  SQL Server
关注(0)|答案(1)|浏览(236)

我现在被一个问题卡住了,希望有人能给我点化。
我的部门有一些panda脚本,用于从CSV获取数据,进行一些小的转换,然后使用SQL Alchemy ORM(dataframe.to_sql)将其写入我们的SQL Server数据库。此连接使用fast_executemany参数设置。处理后的 Dataframe 只有大约50 K行和大约20列。写入SQL数据库大约需要2/3分钟。
我最近开始探索将这个脚本的Pandas部分替换为Polars,以匹配我们的其他一些过程。从Pandas切换到Polars后,转换时间大大缩短,在Polars中完成转换后,我使用www.example.com _pandas()将输出帧转换为PandasDFPolarsFrame.to。
当我尝试将这个转换后的Polars帧写入SQL服务器时,我的问题出现了,使用的方法与Pandas Dataframe 完全相同。但是,将相同数量的数据写入SQL需要大约25/30分钟。
我似乎找不出原因。我的直觉是,在用两种方法比较SQL表之后,Polars似乎是以随机顺序写入SQL的。当插入每一行时,我们会自动为该行分配一个“RecordId”,而Pandas Dataframe 是按顺序插入的。当我将其与Polars数据表进行比较时,RecordId字段变为“1,10,5,19,5000”。8等。
是不是还有什么我没注意到的,或者有什么原因让我这么做?

h5qlskok

h5qlskok1#

我猜你有一个groupby,如果你不告诉它maintain_order=True,它就不会把事情安排得井井有条。
如果没有groupby,则可以在发出to_pandas之前发出sort

相关问题