Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Informix驱动程序在R中使用ODBC连接时发生SQL查询错误_R_Informix_Rodbc - Fatal编程技术网

使用Informix驱动程序在R中使用ODBC连接时发生SQL查询错误

使用Informix驱动程序在R中使用ODBC连接时发生SQL查询错误,r,informix,rodbc,R,Informix,Rodbc,利用RODBC包的功能,我成功地创建了ODBC,但在尝试查询数据库时收到错误消息。我使用的是INFORMIX 3.31 32位驱动程序(版本3.31.00.10287) 您引用的错误消息是: "[RODBC] ERROR: Could not SQLExecDirect 'SELECT * FROM \"exampleTABLE\"'" 如果环境DELIMIDENT是在服务器或客户机(或两者)的环境中设置的,Informix只能识别用双引号括起来的表名。设置为什么并不重要;当需要分隔标识符时,

利用RODBC包的功能,我成功地创建了ODBC,但在尝试查询数据库时收到错误消息。我使用的是INFORMIX 3.31 32位驱动程序(版本3.31.00.10287)


您引用的错误消息是:

"[RODBC] ERROR: Could not SQLExecDirect 'SELECT * FROM \"exampleTABLE\"'"
如果环境DELIMIDENT是在服务器或客户机(或两者)的环境中设置的,Informix只能识别用双引号括起来的表名。设置为什么并不重要;当需要分隔标识符时,我使用
DELIMIDENT=1

您是如何在Informix数据库中创建表的?除非使用DELIMIDENT set创建表,否则表名不区分大小写;表名周围不需要引号

事实上,你得到的错误-201意味着你已经通过了连接过程;这是一个良好的开端,并简化了接下来的工作


我不确定您是在Unix机器上还是在Windows机器上,这通常有助于说明这一点。在Windows上,您可能必须使用SETNET32(Informix程序)设置环境,或者有一种方法可以在连接字符串中指定delimient。在Unix上,您可能在您的环境中设置了它,而R软件会选择它。但是,如果在GUI环境中通过某种菜单按钮或选项启动R,则可能会出现问题;在R程序运行之前,配置文件可能不会执行。

您可以尝试使用RODBC中的
sqlQuery()
函数检索结果。这是我在工作中使用的功能,从未出现过问题:

sqlQuery(channel, "select top 10 * from exampleTABLE")
您应该能够将所有查询放入一个列表中,并像以前一样进行迭代:

dat <- lapply(queries, function(x) sqlQuery(channel, x))

dat当查询单个表时会发生什么?@Chase:不管是哪一个表,当我查询单个表(并将查询结果分配给'res')时,我会收到与上面相同的错误消息(除了'exampleTABLE'是表的实际名称)。嗯……您尝试过任何其他函数来检索结果吗?也许
sqlQuery(频道,“从示例表中选择前10名”)
?@Chase:您使用sqlQuery的建议奏效了。如果您将此建议作为答案,我将接受它作为“答案”。我不是数据库表的创建者。很抱歉,我没有指定我的操作系统;这是Windows XP专业版2002。事实上,我尝试了@Chase的建议(使用带有SQL字符串的sqlQuery),效果很好。
"[RODBC] ERROR: Could not SQLExecDirect 'SELECT * FROM \"exampleTABLE\"'"
sqlQuery(channel, "select top 10 * from exampleTABLE")
dat <- lapply(queries, function(x) sqlQuery(channel, x))