2014-11-21 112 views
2

我连接MATLAB到沃顿研究数据服务数据库Compustat和正在运行一个简单的查询MATLAB数据库取()为WRDS普数据库中花费的时间太长

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

感谢您的帮助!

+0

尽量不要用SQL排序应用selction /过滤器,但以后做在MATLAB您导入了数据。 – Oleg 2015-06-12 18:44:26

回答

0

如果你有博士acount或以上你可以改变接近一点点。

我开发了一个API,它可以让你从WRDS UNIX服务器下载数据集。这是使用和更快。如果你有问题,请告诉我。

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

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

然后,您可以:

  1. 解压表
  2. 进口它readtable()
  3. 在Matlab
+0

你好,@ Oleg,我想用链接中显示的包来连接到matlab中的wrds,但是每次运行wrds_install;和w = wrds('用户名','密码'),我的matlab(2015Ra)在笔记本电脑立即拼凑。我不知道原因。 – Shine 2016-03-01 13:48:20

+0

@Shine您可以在github上提交一个问题,提供尽可能多的细节来重现问题(操作系统,代码示例,如果您在崩溃前在命令窗口中打印某些内容,操作系统发出崩溃报告)? – Oleg 2016-03-01 13:58:03

+0

谢谢。我注册并在那里提出一个新问题。 – Shine 2016-03-01 14:25:11