当前位置: 首页 > 知识库问答 >
问题:

如何根据日期列将一个巨大的mysql表转储到不同的text/csv文件中?

闾丘选
2023-03-14
col_1 col_2 date_col
a     b      20-12-2021 
a     b      20-12-2021 
a2    b2     21-12-2021
..    ..     ...

因此row1row2将转到名为20_12_2021.CSV的CSV,row3将转到21_12_2021.CSV。我现在正在做的是使用Python获取结果,然后逐行循环,然后确定结果的位置,但这需要大量的时间。

有没有更好更优化的方法来做到这一点?

共有1个答案

冉高寒
2023-03-14

我喜欢这种解决方案,您可以使用df.groupbydate_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对分块加载的支持。

 类似资料:
  • 问题内容: 我有250MB以上的巨大的CSV文件要上传 文件格式为,数据可能看起来像 我想基于划分文件,因此输出应为n个文件,其中 输出量 和 和 我该如何有效地做到这一点? 问题答案: 如果文件已经按排序,则可以执行以下操作:

  • 我的问题是: > 如何使其与较大的文件一起工作? 有什么办法能让它快一点吗? 我的电脑有8GB的RAM,运行64位Windows 7,处理器是3.40GHz(不确定你需要什么信息)。

  • 问题内容: 我目前正在尝试从Python 2.7中的.csv文件中读取数据,该文件最多包含100万行和200列(文件范围从100mb到1.6gb)。对于少于300,000行的文件,我可以(非常缓慢地)执行此操作,但是一旦超过该行,就会出现内存错误。我的代码如下所示: 在getstuff函数中使用else子句的原因是,所有符合条件的元素都将一起列在csv文件中,因此当我经过它们时,为了节省时间,我离

  • 问题内容: 我有一个很大的csv文件,因此无法将它们全部读入内存。我只想阅读和处理其中的几行内容。所以我正在Pandas中寻找一个可以处理此任务的函数,基本的python可以很好地处理此任务: 但是,如果我在熊猫中这样做,我总是会读第一行: 我正在寻找一些更简单的方法来处理熊猫中的这项任务。例如,如果我想读取1000到2000的行。如何快速执行此操作? 我想使用熊猫,因为我想将数据读入数据框。 问

  • 如何将CSV文件导入MySQL表?我想把第一行数据用作列名。 我读到如何将CSV文件导入MySQL表?,但是唯一的答案是使用GUI而不是shell?

  • 我们需要将CSV文件数据转储到Cassandra DB--该文件包含带有特殊字符的混合大小写列名(例如:-Actual_Values, 序列号。no,数量)。 创建了一个包含这3列的Cassandra表,但是当通过PutCassandraRecord处理器从NIFI转储数据时,它的抛出错误为invalidQueryException:undefined column actual_values。