Python 3.x Python:在块中读取大型CSV

Python 3.x Python:在块中读取大型CSV,python-3.x,Python 3.x,要求:读取大块的大型CSV文件(>100万行) 问题:有时,即使文件具有唯一的行,生成器也会两次生成同一组行。但有些跑步看起来很好,没有重复 看起来我在代码中遗漏了什么,我无法理解 要确保它不会反复生成具有不同内容的相同对象吗 代码: Idk如果你有选择尝试熊猫,如果是的话,这可能是你的答案。 在csv中处理数百万条记录时,我发现熊猫的速度更快, 这里有一些代码可以帮助您 import pandas as pd chunks = pd.read_csv(f_source.name, delim

要求:读取大块的大型CSV文件(>100万行)

问题:有时,即使文件具有唯一的行,生成器也会两次生成同一组行。但有些跑步看起来很好,没有重复

看起来我在代码中遗漏了什么,我无法理解

要确保它不会反复生成具有不同内容的相同对象吗

代码:


Idk如果你有选择尝试熊猫,如果是的话,这可能是你的答案。 在csv中处理数百万条记录时,我发现熊猫的速度更快, 这里有一些代码可以帮助您

import pandas as pd

chunks = pd.read_csv(f_source.name, delimiter="|", chunksize=100000)
for chunk in chunks:
    for row in chunk.values:
        print(row)

pandas为read_csv提供了许多选项:

请看,我将对此进行研究,但目前,我无法在prod env的Airflow中安装新的库。上面的代码没有内存问题,即使使用完全相同的源数据,也会产生不同的结果?@Mike67是的,我使用的是相同的源数据,但运行一次。下面将使用上面的代码
处理块中的块:orcl.bulk\u insert\u rows(table=self.oracle\u table,rows=list(map(tuple,chunk)),target_fields=self.target_fields,commit_every=10000)
没有使用oracle,但是这里的imo列表(map(tuple,chunk))可以完成您的工作。我尝试使用Pandas,正如您所提到的,但出现了一个错误,
[2020-10-03 22:30:46505]{taskinstance.py:1145}错误-错误:ORA-01840:输入值不够长,不适合日期格式
Sample Data
311052 | 0 |“Mobile SSU”|“12-Nov-18”|“Cancelled”|“essentials”|“F”| 19.99 |“month”|“
import pandas as pd

chunks = pd.read_csv(f_source.name, delimiter="|", chunksize=100000)
for chunk in chunks:
    for row in chunk.values:
        print(row)