【发布时间】:2014-11-06 18:02:03
【问题描述】:
我在运行以下 R 版本的 Win7 机器上使用 ROracle:
平台 x86_64-w64-mingw32
拱 x86_64
操作系统 mingw32
系统 x86_64、mingw32
状态
专业 3
次要 1.1
2014 年
07月
第 10 天
svn 版本 66115
语言 R
version.string R 版本 3.1.1 (2014-07-10)
昵称 Sock it to Me
最后,我要将脚本移动到 *nix 机器上,对其进行 cron 运行,然后使用 RScript 运行它。
我想做类似的事情:
select * from tablename where 'thingy' in ('string1','string2')
这将返回包含 SQLDeveloper(或 Toad 等)中所有列的两行。
(最终,我想将结果从一个 DB 提取到 data.frame 中的单个列中,然后使用这些结果循环 并从第二个数据库中提取结果,但我也需要能够执行此功能。)
我正在关注the documentation for RORacle from here.
我也看过这个(没有得到答案):
Bound parameters in ROracle SELECT statements
当我尝试从 ROracle 进行查询时,我会收到两个不同的错误,具体取决于我尝试的是 dbGetQuery() 还是 dbSendQuery()。
作为背景,以下是我正在使用的版本、查询和数据:
驱动程序名称:Oracle (OCI)
驱动版本:1.1-11
客户端版本:11.2.0.3.0
连接信息是标准的:
库(ROracle)
ora dbcon
这两个查询返回预期结果:
rs_send
rs_get
也就是说,1000 行来自 tablename,其中 'thingy' 存在于 columnname_A 中。
我有一个 data.frame 一列,两行。
my.data = data.frame(RANDOM_STRING = as.character(c('string1', 'string2')))
并且 str(my.data) 返回这个:
str(my.data)
'data.frame':2 obs。 1 个变量:
$ RANDOM_STRING: chr "string1" "string2"
我尝试的查询是:
不
这给了我一个错误:
.oci.SendQuery(conn, statement, data = data, prefetch = prefetch, 中的错误:
绑定数据与绑定规范不匹配
和
not_this_either
这给了我一个错误:
.oci.GetQuery(conn, statement, data = data, prefetch = prefetch, 中的错误:
绑定数据行数过多
我猜我的问题出在查询的 data=(widget_name=my.data$RANDOM_STRING) 部分,但我无法通过rubber duck 解决它。
另外,我很好奇为什么我会收到两个不同且不同的错误,具体取决于查询是使用发送(并稍后获取)格式还是获取格式。
【问题讨论】: