楼主: 飘洒
4916 6

[问答] 请教R连接数据库或Excel [推广有奖]

  • 3关注
  • 14粉丝

博士生

94%

还不是VIP/贵宾

-

威望
0
论坛币
974 个
通用积分
24.9892
学术水平
2 点
热心指数
6 点
信用等级
0 点
经验
13703 点
帖子
434
精华
0
在线时间
285 小时
注册时间
2009-3-13
最后登录
2022-4-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想用R来连接Excel,用odbcConnectExcel来做的,程序如下:
sheet<-'D:\\projcect\\renew\\a.xls'
con<-odbcConnectExcel(sheet)
tb<-sqlTables(con)
qry<-paste("select member_id from ",tb$TABLE_NAME,"where member_t='p'")
会有如下错误:
qry
[1] "42000 -3506 [Microsoft][ODBC Excel Driver] FROM 子句语法错误。"                       
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select member_id from a$ where member_t='p''"

请问哪位大侠做过这个相关的,请指点下。先谢谢了!

二维码

扫码加我 拉你入群

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

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

关键词:连接数据库 EXCEL exce xcel cel 连接数据库 Excel

回帖推荐

kiddbai 发表于2楼  查看完整内容

从错误提示信息来看,利用RODBC貌似不能直接进行SQL查询并提取数据,我没这样做过。 另外注意,你这里有一个语法错误,在RODBC的文件里已经提到过,对于EXCEL的表名称在做SQL查询时应当使用“[ ]”括起来才能正确查询,如表名称为Sheet1,用sqlTables()函数看到的是“Sheet1$”,在做查询的时候要使用“[Sheet1$]”才可以。 因此你的语句可以改为:之后再使用查询函数:这样就可以提取这个EXCEL表的数据。 至于到底能否使用 ...
It is not entirely satisfying but the alternatives are worse!
统计人
沙发
kiddbai 发表于 2011-11-14 10:30:05 |只看作者 |坛友微信交流群
从错误提示信息来看,利用RODBC貌似不能直接进行SQL查询并提取数据,我没这样做过。

另外注意,你这里有一个语法错误,在RODBC的文件里已经提到过,对于EXCEL的表名称在做SQL查询时应当使用“[ ]”括起来才能正确查询,如表名称为Sheet1,用sqlTables()函数看到的是“Sheet1$”,在做查询的时候要使用“[Sheet1$]”才可以。

因此你的语句可以改为:
  1. qry<-paste("select * from [", tb$TABLE_NAME, "]", sep="")
复制代码
之后再使用查询函数:
  1. sqlQuery(con, qry)
复制代码
这样就可以提取这个EXCEL表的数据。
至于到底能否使用SQL查询,可以自己试一下。
毕竟EXCEL不是专业或开源数据库,现在对于MS-Office文件的兼容都是使用倒推的方法,因此兼容性肯定不好,还是建议全部提取数据给一个data.frame,然后在R里进行操作,非常方便的。
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
飘洒 + 1 + 1 + 1 好的意见建议
qoiqpwqr + 50 + 20 + 1 热心帮助其他会员

总评分: 经验 + 50  论坛币 + 20  学术水平 + 1  热心指数 + 2  信用等级 + 1   查看全部评分

使用道具

藤椅
飘洒 发表于 2011-11-14 11:35:14 |只看作者 |坛友微信交流群
谢谢kiddbai,我试过了,可以的,非常感谢!
It is not entirely satisfying but the alternatives are worse!
统计人

使用道具

板凳
kiddbai 发表于 2011-11-14 15:52:36 |只看作者 |坛友微信交流群
嗯,数据量大的话,装个MySQL吧,那个更好用,呵呵!

使用道具

报纸
飘洒 发表于 2011-11-14 18:29:37 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-11-14 15:52
嗯,数据量大的话,装个MySQL吧,那个更好用,呵呵!
最近在研究文本挖掘的东西,数据量会比较大,处理文本的操作会比较多,会用到一些perl正则表达式的东西,还没有试着连过MySQL。不知道好不好连接,应该也挺好玩的,呵呵!可能以后还会找你请教的,哈哈!
It is not entirely satisfying but the alternatives are worse!
统计人

使用道具

地板
kiddbai 发表于 2011-11-15 10:40:27 |只看作者 |坛友微信交流群
飘洒 发表于 2011-11-14 18:29
最近在研究文本挖掘的东西,数据量会比较大,处理文本的操作会比较多,会用到一些perl正则表达式的东西, ...
我也是初学,呵呵,不过既然处理大量的数据,还是应当用MySQL,毕竟免费的,很强大,连Google都用,应该是没有做不了的事情了。另外,强烈建议你把RODBC的文档好好读一遍,不知你读没读,我读了两遍,很多看不懂,但是很多看懂的已经很管用了,尤其是关于MySQL的。

使用道具

7
飘洒 发表于 2011-11-15 21:23:32 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-11-15 10:40
我也是初学,呵呵,不过既然处理大量的数据,还是应当用MySQL,毕竟免费的,很强大,连Google都用,应该是 ...
我觉得R的学习,主要就两块的内容,一个是数据格式的转换,读入写出;二是,数据的处理,包括算法的实现等。现在我主要在搞数据输入输出,格式的转化。RODBC确实需要好好读读。由于我们这边MySQL是生产环境,不许连接的。有个oracle测试库可以连接。先用这个来练习。希望以后多与你交流,呵呵!
It is not entirely satisfying but the alternatives are worse!
统计人

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-4 06:44