python - 如何根据日期列在不同的文本/csv文件中转储一个巨大的mysql表?
问题描述
我有一个包含数百万条记录的巨大 MySQL 表。我有一个用例,根据日期列,我想将结果拆分并转储到不同的文本文件中。
例如:
col_1 col_2 date_col
a b 20-12-2021
a b 20-12-2021
a2 b2 21-12-2021
.. .. ...
因此row1
,androw2
将转到一个名为 的 CSV 20_12_2021.csv
,row3
并将转到21_12_2021.csv
. 我现在正在做的是使用 Python 来获取结果,然后逐行循环,然后确定结果的去向,但这需要很长时间。
有没有更好更优化的方法来做到这一点?
解决方案
我喜欢这个解决方案,您可以在其中使用df.groupby
column date_col
,它将使用映射器或0
默认情况下轴上的一系列列对 DataFrame 进行分组,并表示行。
解决方案:
for name, g in df.groupby('date_col'):
g.to_csv(f'{name}.csv', index=False)
Result:
$ cat 20-12-2021.csv <-- CSV file created
col_1,col_2,date_col
a,b,20-12-2021
a,b,20-12-2021
$ cat 21-12-2021.csv <-- CSV file created
col_1,col_2,date_col
a2,b2,21-12-2021
或者
df.groupby('date_col').apply(lambda x: x.to_csv('{}.csv'.format(x.name), index=False))
注意:如果您对一百万行有效的 MYSQL 感到好奇,那么这里有一个很好的答案Pandas 现在内置了对@ThePhysicist 分块加载的支持。
推荐阅读
- xml - XPath 表达式中的指数性能下降
- xamarin.forms - ScrollView 如何检测滚动事件
- ffmpeg - 如何使用本地网络摄像头对合并的传入 icecast 音频流进行冰播?
- angular - 离子不隐藏页面
- typescript - Vue 使用 Webpack 编译的库加载了两次
- reactjs - 反应使用效果
- c++ - 如果 struct-2 在 struct-1 之后声明,是否有任何方法可以在 struct-1 中包含 struct-2 变量?
- sql - SQL - 如何获取列的值并将其作为新列的值放在字符串的末尾
- ios - 使用 React Native CameraRoll 创建相册
- java - 没有 System.out.println() 线程将无法运行