【问题标题】:Loading table into R from SQL Server database将表从 SQL Server 数据库加载到 R 中
【发布时间】:2022-01-07 02:00:47
【问题描述】:

当我尝试从 Azure VM 中的 SQL Server 加载表时出现以下错误。我知道连接是成功的,但我无法让我的语法对于我想要加载到 R 环境中的表正确。

错误:nanodbc/nanodbc.cpp:1655: 42000: [Microsoft][ODBC SQL Server Driver][SQL Server]无效的对象名称“Harris_11292021.dbo.Applicant”。 [Microsoft][ODBC SQL Server Driver][SQL Server]无法准备语句。

'选择 *
FROM "Harris_11292021"."dbo.Applicant" AS "q14"
哪里(0 = 1)'

我正在尝试加载表格Applicant。问题是连接到applied_systems 并且在您到达表之前还有一个低于该级别的数据库和架构级别?

我尝试使用 in_schema 命令来解决这个问题,但我认为我执行错了。

library(odbc)
library(tidyverse)

# Data connection to database --------------------------------------
con_applied <- dbConnect(odbc::odbc(), "applied_systems", timeout = 10)

# Load table -------------------------------------------------------------
policy_master <- tbl(con_applied, in_schema("Harris_11292021", "dbo.Applicant"))

这是连接截图:

感谢您的帮助。

【问题讨论】:

  • Harris_1129021 是数据库,dbo 是架构,Applicant 是表名。数据库通常在连接字符串或 DSN 中指定。所以应该是in_schema("dbo", "Applicant")。但是dbo 是一种默认模式,所以你不需要指定它。
  • 谢谢大卫。那么我是否将 Harris_1129021 数据库名称放在 dbConnect 命令中?我试过了,但没有用。

标签: r sql-server odbc dbplyr


【解决方案1】:

知道了。在 dbConnect 语句中添加数据库名称。

# Data connection to database backup --------------------------------------
con_applied <- dbConnect(odbc::odbc(), "applied_systems", timeout = 10, database = "Harris_11292021")

# Load tables -------------------------------------------------------------
policy_master <- tbl(con_applied, in_schema("dbo", "Applicant"))

【讨论】:

  • 感谢您提交自己问题的答案!就是这样:-)
猜你喜欢
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多