我正面临着通过RODBC连接R到Teradata的问题。
我的系统:Ubuntu14.04;Teradata14.10;ODBC驱动程序16.0;R3.3.3;RStudio 1.0.136
我已经测试了ODBC驱动程序,它已经安装并正常工作(我已经测试过它通过SQL连接到Teradata,使用/tdxodbc64 )。我可以毫无问题地运行查询。
但是,当我试图在R中做同样的事情时:
library('RODBC')
channel <- odbcConnect(dsn="MY_DSN_NAME",uid="MY_USER",pwd="MY_PASS")我明白了:
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中可用的数据源,就会得到以下信息:
odbcDataSources()
LADW_V01 testdsn
"Teradata ODBC Driver" "tdata.so" 任何建议都会很好!提前谢谢。
发布于 2017-03-23 16:00:09
这就是我用来连接我的Teradata的东西。即使在RMarkdown中也很好,而且没有硬编码密码。相反,它从Windows数据库管理员那里获取凭据。
注意:下面的代码用于*.Rmd文件
```{R}不幸的是,odbc还没有在CRAN上。
所以我们需要devtools
install.packages(devtools)
Devtools::install_github(“rstats/odbc”)
从Windows数据源管理器获取连接信息
使用您手动设置的名称
con <- dbConnect(odbc::odbc(),'Your_Data_Warehouse_Name')
```{sql connection = con, output.var = result}--这是sql代码,需要相应地标记注释
从My_Table中选择前10位*
```{R}结果在下一个块中是可用的!
结果
```更新:我注意到您正在运行。我还没有在我的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以获得更多信息和示例。
https://stackoverflow.com/questions/42980665
复制相似问题