用于WRDS Compustat的MATLAB数据库fetch()耗时太长

时间:2014-11-21 19:19:27

标签: sql matlab fetch wrds-compusat wrds

我正在将MATLAB连接到沃顿研究数据服务COMPUSTAT数据库并运行一个简单的查询

WRDS_Connect

setdbprefs('FetchInBatches','yes')
query = exec(WRDS, ['select gvkey from COMP.FUNDA where fyear = 2000 order by gvkey asc']);
result = fetch(query);
result.data

WRDS_Connect只是使用JDBC驱动程序和

建立与WRDS服务器的连接
WRDS = database(instance, username, password, serverAddress);

查询不是太大,给了我27000行数据。但是这需要太长时间。分析显示这27000行大约需要5分钟。 我想实际上进行更广泛的查询,但不应该花这么长时间。

我能做些什么来加快速度吗?我附上了剖析的截图。 Profiling Screenshot

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您拥有博士学位或以上,您可以稍微改变一下。

我开发了一个API,允许您从WRDS unix服务器下载数据集。 简单使用更快

https://github.com/okomarov/wrds上查看,如果您有问题,请告诉我。

wrds_install
w = wrds('username');
w.sas2csv('COMP.FUNDA');

数据将保存在.\data\COMP.FUNDA.zip

然后你可以:

  1. 解压缩表格
  2. 使用readtable()
  3. 导入它
  4. 在Matlab中应用选择/过滤器