【发布时间】:2018-04-04 13:58:33
【问题描述】:
我有一个有效的 R 脚本。现在,我将 SQL 服务器中的数据提取到 Excel 工作表中,并将此 Excel 工作表导入 R。 我想直接从 SQL Server 导入。 我拥有的数据:
- DNS
- 数据库
- 登录
- 密码
这足以从这个 SQL Server 中提取数据库吗?
【问题讨论】:
标签: r sql-server
我有一个有效的 R 脚本。现在,我将 SQL 服务器中的数据提取到 Excel 工作表中,并将此 Excel 工作表导入 R。 我想直接从 SQL Server 导入。 我拥有的数据:
这足以从这个 SQL Server 中提取数据库吗?
【问题讨论】:
标签: r sql-server
我觉得够了。您可以从 RODBC 库中受益,如下所示:
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL
Server};server=mysqlhost;database=mydbname;trusted_connection=true')
res <- sqlQuery(dbhandle, 'select * from information_schema.tables')
参考:SQL Server RODBC Connection
编辑:对于您的情况,您可以尝试:
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL
Server};server=mysqlhost;database=mydbname;uid=yourusername;pwd=yourpassword')
res <- sqlQuery(dbhandle, 'select * from information_schema.tables')
参考:https://blog.learningtree.com/querying-sql-server-data-from-r-using-rodbc/
【讨论】:
dbhandle 给出错误:Error: State 08001, code 17, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL-server doesn't exist or access is denied.
dbhandle <- odbcDriverConnect('driver={SQL Server};server=DNS;database=DBNAME;trusted_connection=true') 是我在控制台中的条目。但是我在哪里提供登录名和密码?
trusted_connection 应该替换用户/密码。此外,DSN(不是 DNS)不是替换服务器,而是替换驱动程序。事实上,DSN 可以包含服务器/数据库/用户信息。因此,您将使用:odbcConnect('DSN')。这样可以避免在代码中暴露数据库凭据和规范。