RODBC-一个sqlQuery()调用中的多个语句

RODBC-一个sqlQuery()调用中的多个语句,sql,r,Sql,R,在R中,每当我将带有多个语句的查询传递给sqlQuery时,我都会收到一个错误。 比如说, sqlQuery(ch, 'DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2;') 产生错误 [1] "42000 1064 [MySQL][ODBC 5.1 Driver][mysqld-5.5.27]You have an error in your SQL syntax; check the manual that corresponds to yo

在R中,每当我将带有多个语句的查询传递给sqlQuery时,我都会收到一个错误。 比如说,

sqlQuery(ch, 'DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2;')
产生错误

[1] "42000 1064 [MySQL][ODBC 5.1 Driver][mysqld-5.5.27]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE IF EXISTS t2' at line 1"
[2] "[RODBC] ERROR: Could not SQLExecDirect 'DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2;'"

我做错了什么?

首先,尝试一条语句
如果存在t1,则从R中删除表;对我来说(我正在用Access数据库进行测试),这失败了,表明ODBC不支持我的环境中存在的
。在MySQL工作台上进行测试不是一个公平的比较;但是,您的构造可能与RMySQL包提供的函数一起工作

ODBC在许多方面是不同的,所以为了测试事情是否可行,我通常使用Access通过ODBC连接到数据库,并使用SQL设计器。以下内容在那里不起作用:

CREATE TABLE b (id INT PRIMARY KEY);
DROP TABLE b;

作为单独的语句,它可以正常工作。

这是一个与您使用SQL语法有关的问题,而不是
R
。添加
sql
标记以适当地将注意力引向这个问题。我已经尝试在MySQL Workbench中执行该语句,它运行良好。也许您需要转义分号字符(我不记得它是否是R中的特殊字符)。如果存在t1,请尝试“删除表格”;删除表(如果存在)\;'不,不幸的是,这似乎也不起作用。我只尝试了一个语句drop if语句,结果成功了。所以ODBC似乎在我的环境中支持这种构造。我想知道是不是RODBC包不支持多个sql语句,尽管StackOverflow上的其他问题表明不是这样。