繁体   English   中英

R 中的 ODBC 连接字符串和/或 DSN

[英]ODBC connection string and/or DSN in R

我正在尝试使用 RStudio(32 位)中的“RODBC”包连接并读取数百个 MS Access 数据库文件。 以前的程序用来打开和读取这些文件,使用 system.mdw 系统数据库文件来指定用户权限,但我在 RODBC 文档中找不到任何描述如何在连接字符串中包含此文件的内容。 这是我尝试过的,它已成功连接到数据库,但无法读取任何内容:

files <- dir("file directory to access files", recursive=TRUE, full.names=TRUE, pattern="\\.mdb$")              

#2007 version is able to connect but can't read
dta <- odbcConnectAccess2007(files[1])
tables = sqlTables(dta)# can read all the table names in each file

  habData = sqlFetch(dta, "Streams") #can't read the table content, see error message below

> habData
[1] "42000 -1907 [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'Streams'."
[2] "[RODBC] ERROR: Could not SQLExecDirect 'SELECT * FROM \"Streams\"'" 

#Older version is able to connect and still can't read
conn <- odbcConnect(paste("MS Access Database;DBQ=",files[4],sep = ""), uid = "Engine")
df <- sqlFetch(conn, "Streams") #can't read the table content, see error message below

我有 system.mdw 文件,但不知道如何将它与 Access 数据库相关联。 有没有人在 R 中做过这个? 也许使用不同的包装?

我剖析了使用 Windows ODBC 控制面板 DSN 建立的连接字符串,并使用它来重建包含 system.mdw 文件、用户 ID 和密码的新连接字符串。 现在我可以循环遍历所有文件目录并读出数据!

我没有在 R 中做过,但是 ODBCconnect 的 R 文档说第一个参数是“DSN”(数据源名称)。 与其在“旧版本”中使用参数化连接字符串,我建议您从 Windows 控制面板中的“ODBC”图标开始。 这将为您提供一个向导,帮助您填写所有需要的详细信息。 该向导会将信息保存在注册表或文件中,您需要在 R 中为 ODBCconnect 提供它所创建的 DSN 的名称或完整位置。

我不建议使用 ODBCconnect2007 - 它看起来像一个简化的界面,没有你需要的所有选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM