RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?

Posted

技术标签:

【中文标题】RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?【英文标题】:RODBC package: How to get a logical value for the "Does the Table Exists?" query type?RODBC 包:如何获取“表是否存在?”的逻辑值查询类型? 【发布时间】:2016-01-12 22:58:47 【问题描述】:

我正在尝试将 R/Shiny/SQL 应用程序转换为使用来自 SQL Server 而不是 Oracle 的数据。原代码中有很多如下类型条件:如果表存在,则将其作为数据集,否则上传新数据。我正在从DBI/ROracle 包中寻找dbExistsTable 命令的对应项,但不幸的是odbcTableExists 只是内部RODBC 命令在R 环境中不可用。也是RODBC 包的包装器,允许使用DBI 类型命令-RODBCDBI 似乎不起作用。有任何想法吗? 下面是一些代码示例:

library(RODBC)
library(RODBCDBI)

con <- odbcDriverConnect('driver=SQL
    Server;server=xx.xx.xx.xxx;database=test;uid=user;pwd=pass123')

odbcTableExists(con, "table")

错误:找不到函数“odbcTableExists”

dbExistsTable(con,"table")

(函数(类,fdef,mtable)中的错误: 无法找到签名“RODBC”、“字符”的函数“dbExistsTable”的继承方法

【问题讨论】:

你试过用:::调用它吗,即RODBC:::odbcTableExists(con, "table") 感谢您的回答,我不知道这种可能性,对于许多 R 功能仍然是新手。您的建议的输出是[1] "\"table\""。如果我故意使用不存在的表,则会出现错误消息。通过一些包装,它可以有望在 if 语句中使用。 @Benjamin 的回答可能更惯用。 【参考方案1】:

你可以使用

[Table] %in% sqlTables(conn)$TABLE_NAME

其中[Table] 是您要查找的表的字符串。

【讨论】:

以上是关于RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?的主要内容,如果未能解决你的问题,请参考以下文章

R语言RODBC数据库操作

使用 MAC 10.11.6 在 R 中安装 RODBC 包

如何在 RODBC 中运行 SQL 更新语句?

使用golang检查数据库表是不是存在

R 中的 RODBC 包使用引号创建列名......为啥?

带有 Sqlite 的 Android - 如何检查表是不是存在以及是不是为空