全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1971 2
2016-05-05
LZ在一家公司做实习,公司本来是用的SAS,想考虑能否替换成R,然后我用R来实现现在SAS的功能.

不久前LZ成功用RODBC包连上了公司数据库(DB2),用的是同事的帐号密码。然后表读取,数据读取都没问题。数据库中表的SELECT等操作也ok。

但是最近遇到一个很棘手的问题。首先我们数据库中有两张表,暂且叫做表1和表2吧,表1比较小,表2很大(200w行20列)。首先表1做SELECT弄出一个表3,然后需要表3和表2做JOIN。现在问题是表2在服务器的数据库上,表3在我电脑本地的R上,R很奇怪无法把这两个表进行JOIN。

个人认为现在有两个方法:
一是把表3上传到数据库中,(但同事的帐号没有数据库的修改权限,只能读取,真给我一个能修改数据库的帐号万一把数据库弄坏了责任我也担不起)
二是用R读取表2,但表2真的太大了,内存完全吃不消。

而反观SAS,我用SAS也连上了公司的数据库,用的是同一个帐号密码。
表3 SAS用的是Rsubmit然后creat table,不过创建的是一个work.xxx的表3,这个我估计是本地的SAS中的表,也没有写到数据库里面。然后关键是SAS可以给本地的表3和数据库的表2做JOIN运算!!!

有没有高手指导一下我这种情况R下应该怎么办啊?

网上搜了一下,资料很少,这个兄弟的情况跟我是一样的:
http://stackoverflow.com/questions/29990387/rodbc-using-data-frame-in-a-join-on-sqlquery

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-5-5 19:30:28
嘿,看看这个帖子吧,没准会有点帮助。
http://yanping.me/cn/blog/2012/01/01/working-with-large-datasets/
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-10 13:55:11
RODBC貌似可以设置chunk,每次取固定的行数。
因此,感觉可以在设置chunk的前提下,通过循环把远程数据库的数据放到本地的dbms上(每次fetch几万行应该无压力),再在本地dbms里面做join,这样应该可以突破限制。

另外还想到一个方法,就是sql里面利用with子句把本地表生成一个临时表,再和库里面的表进行join。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群