首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R不能通过RODBC连接到工作Teradat odbc连接

问R不能通过RODBC连接到工作Teradat odbc连接
EN

Stack Overflow用户
提问于 2017-03-23 15:38:07
回答 1查看 1.3K关注 0票数 1

我正面临着通过RODBC连接R到Teradata的问题。

我的系统:Ubuntu14.04;Teradata14.10;ODBC驱动程序16.0;R3.3.3;RStudio 1.0.136

我已经测试了ODBC驱动程序,它已经安装并正常工作(我已经测试过它通过SQL连接到Teradata,使用/tdxodbc64 )。我可以毫无问题地运行查询。

但是,当我试图在R中做同样的事情时:

代码语言:javascript
复制
 library('RODBC')
 channel <- odbcConnect(dsn="MY_DSN_NAME",uid="MY_USER",pwd="MY_PASS")

我明白了:

代码语言:javascript
复制
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=MY_DSN_NAME;UID=MY_USER;PWD=MY_PASS",  :
 [RODBC] ERROR: state tU, code 0, message ��������������������
2: In RODBC::odbcDriverConnect("DSN=MY_DSN_NAME;UID=MY_USER;PWD=MY_PASS",  :
 ODBC connection failed

如果我查看R中可用的数据源,就会得到以下信息:

代码语言:javascript
复制
odbcDataSources()
LADW_V01                testdsn
"Teradata ODBC Driver"             "tdata.so" 

任何建议都会很好!提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-23 16:00:09

这就是我用来连接我的Teradata的东西。即使在RMarkdown中也很好,而且没有硬编码密码。相反,它从Windows数据库管理员那里获取凭据。

注意:下面的代码用于*.Rmd文件

代码语言:javascript
复制
```{R}

不幸的是,odbc还没有在CRAN上。

所以我们需要devtools

install.packages(devtools)

Devtools::install_github(“rstats/odbc”)

从Windows数据源管理器获取连接信息

使用您手动设置的名称

con <- dbConnect(odbc::odbc(),'Your_Data_Warehouse_Name')

代码语言:javascript
复制
```{sql connection = con, output.var = result}

--这是sql代码,需要相应地标记注释

从My_Table中选择前10位*

代码语言:javascript
复制
```{R}

结果在下一个块中是可用的!

结果

代码语言:javascript
复制
```

更新:我注意到您正在运行。我还没有在我的Linux上设置它,所以我不能从经验中发言。但是,包作者在Linux系统上给出了以下等价方法的信息:

MacOS / Linux 在MacOS和Linux上,需要编辑两个单独的文本文件。UnixODBC包括一个命令行可执行的odbcinst,可用于查询和修改DSN文件。不过,这些都是纯文本文件,如果需要,您也可以手工编辑。 有两个不同的文件用于设置DSN信息。- odbcinst.ini -定义驱动程序选项- odbc.ini -定义连接选项 可以为系统的所有用户全局定义DSN配置文件,通常位于/etc/odbc.ini或/opt/local/etc/odbc.ini,具体位置取决于编译unixODBC时使用的选项。odbcinst -j可以用来找到确切的位置。或者,ODBCSYSINI环境变量可用于指定配置文件的位置。例如。ODBCSYSINI=~/ODBC 本地DSN文件也可以与文件~/.odbc.ini和~/.odbcinst.ini一起使用。 odbcinst.ini 包含驱动程序信息,特别是驱动程序库的名称。可以在同一个文件中指定多个驱动程序。 PostgreSQL驱动程序驱动=/usr/local/lib/psqlorbcw.so SQLite驱动程序驱动= /usr/local/lib/libsqlite3odbc.dylib odbc.ini 包含连接信息,特别是用户名、密码、数据库和主机信息。驱动程序行对应于在odbcinst.ini中定义的驱动程序。 PostgreSQL驱动= PostgreSQL驱动程序数据库 = test_db Servername = localhost UserName = postgres密码=密码端口= 5432 SQLite驱动程序= SQLite驱动程序数据库=/tmp/tmp还请参阅:没有GUI的unixODBC以获得更多信息和示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42980665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档