尝试连接到 R 中的 Microsoft Access 数据库的“参数太少”

Posted

技术标签:

【中文标题】尝试连接到 R 中的 Microsoft Access 数据库的“参数太少”【英文标题】:"Too few parameters" trying to connect to a Microsoft Access database in R 【发布时间】:2014-07-25 20:22:07 【问题描述】:

我正在使用 RODBC 连接到 microsoft access 数据库。一些查询工作正常,但在一个我不断收到错误:

07002 -3010 [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
[RODBC] ERROR: Could not SQLExecDirect 'SELECT baseunit FROM archiverapp_common_units WHERE unitname = "ng/ml"'

我正在使用“sqlQuery”函数进行查询。错误中给出的 SELECT 语句是我想要的,并且在我直接复制粘贴到 Access 时起作用。从我收集到的类似帖子来看,这通常是由于列名或表名拼写错误造成的,但这里的一切似乎都是正确的。

【问题讨论】:

可能是您的ng/ml 的语言环境/编码问题您是否尝试在命令行输入此查询? 你让我玩弄命令行,我发现它显然不喜欢你使用双引号,单引号工作正常。 【参考方案1】:

想通了——显然答案是在 WHERE 子句中使用单引号而不是双引号。从此更改我的 R 代码中的查询字符串

'SELECT baseunit FROM archiverapp_common_units WHERE unitname = "ng/ml"'

到这里

"SELECT baseunit FROM archiverapp_common_units WHERE unitname = 'ng/ml'"

解决问题。

【讨论】:

你必须逃离他们吗?发布您的最终命令会很有帮助 不,如果您在 R 中的字符串周围使用双引号,则不会转义。尽管转义没有坏处。 遇到了同样的问题。首先,我认为它与我的查询的 UNION 类型有关。经过几次尝试,通过调用字段Format(DtTm, "Short Date") as Dt, 将其缩小到使用的双引号。替换为单引号;并且,来自RODBC::sqlQuery() 中的R 的查询调用工作正常。谢谢!

以上是关于尝试连接到 R 中的 Microsoft Access 数据库的“参数太少”的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 nuget 控制台代码中的代码通过 Microsoft 登录连接到数据库

C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件

SOAP UI:获取响应时出错;尝试连接到 Microsoft SQL Server 时为 null

无法连接到 docker 托管的 MSSQL

R RPostgreSQL 使用 SSL 连接到远程 Postgres 数据库

使用 Rstudio windows 中的 R rJDBC 包连接到 hive(启用了 kerbero)