Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中处理大型csv文件_Python_Database_Python 2.7_Csv - Fatal编程技术网

在Python中处理大型csv文件

在Python中处理大型csv文件,python,database,python-2.7,csv,Python,Database,Python 2.7,Csv,我有超过3.15亿行和一列的大型CSV文件。我必须一次处理50多个这样的文件才能得到结果 当我使用csv阅读器读取超过10个时,它需要超过12GB的RAM,速度非常慢。为了节省内存,我只能读取文件的一部分,但会花费更多的时间来读取文件,因为它每次都会读取整个文件 我考虑过将它们加载到数据库中,并从那里查询数据。然而,我不确定这种方法是否有任何帮助。有谁能告诉我,在Python中,哪种方法是处理此类场景最有效的方法 您将在这里找到解决方案 此外,如果您有更长的处理管道,您可以查看第4.13节。在

我有超过3.15亿行和一列的大型CSV文件。我必须一次处理50多个这样的文件才能得到结果

当我使用csv阅读器读取超过10个时,它需要超过12GB的RAM,速度非常慢。为了节省内存,我只能读取文件的一部分,但会花费更多的时间来读取文件,因为它每次都会读取整个文件


我考虑过将它们加载到数据库中,并从那里查询数据。然而,我不确定这种方法是否有任何帮助。有谁能告诉我,在Python中,哪种方法是处理此类场景最有效的方法

您将在这里找到解决方案


此外,如果您有更长的处理管道,您可以查看第4.13节。在Beazly和Jones的第三版Python Cookbook一书中创建数据处理管道。

您将在这里找到解决方案

此外,如果您有更长的处理管道,您可以查看第4.13节。在本书中创建数据处理管道,Python Cookbook,Beazly和Jones编写的第三版。

我刚刚开源了一个工具。它是.NET,但是您可以从Python调用EXE。这项工作仍在进行中,但我认为它对你的情况会起作用

使用ETLyte,以下是步骤:

  • 将文件放在
    Flatfiles
    文件夹中,或在
    config.json
    中指定的任何文件夹中
  • 用JSON模式描述它们,并将它们放在
    Schemas
    文件夹中,或您指定的任何文件夹中(注意:如果它们都有相同的模式[您说这是一个单独的列],那么只需将模式中的
    flatfile
    字段更改为与您的文件匹配的正则表达式即可)
  • 在执行加法/乘法时,可以创建执行该计算的派生列
  • 运行
    ETLyteExe.exe
    并允许数据流入
  • ETLyte才刚刚起步,但它有很多特性,而且路线图上还有很多。它还附带了一个带有word completion的交互式REPL,它包装了SQLite DLL,因此您可以在不安装sqlite3的情况下查询数据。有关该工具的概述,请参见。

    我刚刚开源的工具。它是.NET,但是您可以从Python调用EXE。这项工作仍在进行中,但我认为它对你的情况会起作用

    使用ETLyte,以下是步骤:

  • 将文件放在
    Flatfiles
    文件夹中,或在
    config.json
    中指定的任何文件夹中
  • 用JSON模式描述它们,并将它们放在
    Schemas
    文件夹中,或您指定的任何文件夹中(注意:如果它们都有相同的模式[您说这是一个单独的列],那么只需将模式中的
    flatfile
    字段更改为与您的文件匹配的正则表达式即可)
  • 在执行加法/乘法时,可以创建执行该计算的派生列
  • 运行
    ETLyteExe.exe
    并允许数据流入

  • ETLyte才刚刚起步,但它有很多特性,而且路线图上还有很多。它还附带了一个带有word completion的交互式REPL,它包装了SQLite DLL,因此您可以在不安装sqlite3的情况下查询数据。有关该工具的概述,.

    取决于您使用它们进行的操作类型。数据库是一个选项,EC2是另一个选项,CLI是第三个选项,但这一切都取决于您正在做什么。我获取值,执行简单的乘法和加法选项,存储结果,然后前进到文件的下一个块。您的问题没有明确说明。这些文件如何相互关联?为什么它们需要并行处理而不是顺序处理?一次计算需要内存中的多少行?(例如,一次累计只需要一行。)我投票以“不清楚你在问什么”作为结束,因为你没有回答澄清你的问题。这取决于你对他们的操纵类型。数据库是一个选项,EC2是另一个选项,CLI是第三个选项,但这一切都取决于您正在做什么。我获取值,执行简单的乘法和加法选项,存储结果,然后前进到文件的下一个块。您的问题没有明确说明。这些文件如何相互关联?为什么它们需要并行处理而不是顺序处理?一次计算需要内存中的多少行?(例如,一次只需要一行就可以得到一个累积的总数。)我投票结束这个问题,因为“不清楚你在问什么”,因为你没有回答澄清你的问题。