用python语言处理大数据文件,使用python/ODBC从SQLserver数据库创建大数据文件

2024-09-24 02:27:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生。 在我们公司,我们使用Base SAS进行数据分析(ETL、EDA、基本模型构建)。我们想检查在大数据块中是否可以用Python替换它。关于这一点,我有以下几个问题:

  1. python如何处理大文件?我的电脑有8gb的RAM和30gb的平面文件(比如说csv文件)。我通常会对这样的文件做左连接、删除、分组等操作。这在SAS中很容易实现,也就是说,我不必担心RAM低。同样的操作在python中是否可行?如果有人能提供相同的代码列表,我会很感激。

  2. 在从服务器获取数据的同时,如何执行python中的SAS操作(如procsql)在本地PC上创建数据集。 i、 e.在sas中,我将通过执行以下操作从SQL server下载10mln行(7.5GB的数据)


libname aa ODBC dsn =sql user = pppp pwd = XXXX;libname bb '<<local PC path>>';

proc sql outobs = 10000000;
create table bb.foo as
select * from aa.bar
;quit;

在python中执行相同操作的方法是什么。再次提醒你-我的电脑只有8GB内存


Tags: 文件数据sqlbaseetl公司edaram
1条回答
网友
1楼 · 发布于 2024-09-24 02:27:44

Python,特别是python3.X提供了许多处理大型文件。一个其中之一就是使用迭代器。在

Python返回输入的结果(从文本或csv或…)实际上是作为迭代器的open文件的结果,因此您不会有在内存中加载整个文件的问题,使用这个技巧,您可以逐行读取文件并根据需要处理它们。在

例如,如果要将文件放入块中,可以使用deque对象保留属于一个块的行(根据您的条件)。在

除了^{}函数之外,您还可以使用一些^{}函数来处理和应用您的行上的条件,例如,如果您想在每次迭代中访问下一行,可以使用itertools.zip_longest函数,对于从文件对象创建多个独立的迭代器,可以使用itertools.tee。在

最近我写了一个过滤一些大的日志文件(大于等于30GB)的代码,它的性能非常好。在

https://github.com/Kasramvd/log-filter

相关问题 更多 >