Python 如何将SQL日志有效地转换为CSV?

Python 如何将SQL日志有效地转换为CSV?,python,pandas,csv,parsing,Python,Pandas,Csv,Parsing,我有一个大约5GB的SQL.log文件。它是由客户提供的,所以我不想让他们以不同的格式为我导出它。其结构如下: Header 1 Header 2 Header 3 Header 4 -------- -------- -------- -------- value a value 1 value 2 value 3 value a value 4 value 5 value 6 value b value 7 value 8 value 9 Header 1 Header

我有一个大约5GB的SQL.log文件。它是由客户提供的,所以我不想让他们以不同的格式为我导出它。其结构如下:

Header 1 Header 2 Header 3 Header 4
-------- -------- -------- --------
value a  value 1  value 2  value 3
value a  value 4  value 5  value 6
value b  value 7  value 8  value 9

Header 1 Header 2 Header 3 Header 4
-------- -------- -------- --------
value b  value 10  value 11  value 12
value b  value 13  value 14  value 15
value b  value 16  value 17  value 18
我尝试通过将其转换为.txt来解析它,分别读取每一行,处理它,然后通过执行以下操作转到下一行:

with open(filename) as infile:
    for line in infile:
有没有更有效的方法?有没有办法将.log文件直接转换为数据帧


提前谢谢

你需要更具体地说明为什么你的方法没有效率。你试过什么-把你的代码编辑成问题。这是你必须做的一次,还是重复?因为最终,你最多只能得到一个恒定的时间加速,你想在5分钟的过程中花费多少精力来减少70%的时间?(特别是如果你必须使用你不熟悉的工具,并且在调试你不理解的代码时挣扎……@barny试图通过一次加载一行来解析一个5GB的文件,这真是太好了consuming@cyril不,这真的不费时。Python的文件迭代器实际上缓冲了相当大的数据块,并从缓冲区中提取数据,所以它实际上并没有进行100万次读取。在Python中而不是在C中循环100万次的开销大约为一秒钟。解码100万行Unicode文本可能需要10秒左右的时间,但如果您不需要这一部分,您可以以二进制模式打开文件并将其作为字节进行处理。如果你的代码需要几个小时,那么瓶颈可能在其他地方。另一种可能是,你正在做的实际解析、分组等工作确实需要几个小时才能运行。如果是这样的话,仅仅使用Pandas进行循环,但仍然以相同的方式进行工作本身,只会节省几秒钟的时间,但是如果您可以重写Pandas操作方面工作的缓慢部分,则可能会节省数小时。但无论如何,第一步是尝试获取一些评测信息(或者至少是离线的基准测试模拟),以了解您需要关注的部分。