首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过DBI和ODBC用R连接到Teradata

通过DBI和ODBC用R连接到Teradata
EN

Stack Overflow用户
提问于 2019-12-06 14:38:04
回答 1查看 929关注 0票数 0

我使用Teradata助手连接到Teradata助手。连接参数由服务器地址和驱动程序(出于隐私原因更改服务器信息)组成,如下所示:

代码语言:javascript
复制
Name: my_teradata_connection
Teradata Server Info: 00.11.22.333
Data Source: Teradata Database ODBC Driver 16.20
UID: My_User_ID
PWD: My_PWD

我试图使用DBIodbc包使用R连接到Teradata.com。

代码语言:javascript
复制
con <- DBI::dbConnect(odbc::odbc(),
                      Driver = "[your driver's name]",
                      Host   = "[your server's path]",
                      DBCName = "[IP Address or Alias]"
                      UID    = rstudioapi::askForPassword("Database user"),
                      PWD    = rstudioapi::askForPassword("Database password"))

显然,Driver应该是Teradata Database ODBC Driver 16.20。但是,我们会说Teradata Server Info00.11.22.333,我把它放在哪里呢?它应该填充Host还是DBCName参数?而无论哪一个没有人口,那里会有什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 16:57:43

通常,在大多数DB中,包括ODBC连接服务器和主机在内,都是同义关键字,在这些关键字中,您不会同时看到两个关键字,而只能看到一个关键字(当然,例外情况除外)。具体来说,按照odbc 文档dbConnect维护可选的server参数:

代码语言:javascript
复制
dbConnect(
     drv,
     dsn = NULL,
     ...,
     timezone = "UTC",
     timezone_out = "UTC",
     encoding = "",
     bigint = c("integer64", "integer", "numeric", "character"),
     timeout = 10,
     driver = NULL,
     server = NULL,
     database = NULL,
     uid = NULL,
     pwd = NULL,
     dbms.name = NULL,
     .connection_string = NULL
)

但是,...表示特定于相应驱动程序的附加ODBC驱动程序关键字,这里是Terdata驱动程序。

. these =‘these 2’>额外的ODBC关键字,这些关键字将与其他参数连接起来,形成最终的连接字符串

从Teradata16.20 文档的ODBC驱动程序来看,DriverDBCName必需的关键字。在IP地址或别名指示下,DBCName似乎是服务器或主机的同义词。

DBCName = <IP-addr-or-alias>

代码语言:javascript
复制
| Keyword/Synonym                                             | Description                                                                             |
|-------------------------------------------------------------|-----------------------------------------------------------------------------------------|
| Driver=<driver-path>                                        | [Required] The full path to the ODBC Driver for Teradata shared objects…                |
| Description=<data-source-desc>                              | [Optional] Descriptive text about the data source.                                      |
| DBCName=<IP-addr-or-alias>                                  | [Required] The IP address or FQDN (fully qualified domain name) of the Teradata server… |
| Username=<name> or UID=<name>                               | [Optional] The default username for logging onto a Teradata server system.              |
| Password=<password>                                         | [Optional] The password required for the default Username.                              |
| DefaultDatabase=<database-name> Or Database=<database-name> | [Optional] The default database associated with the specified data source…              |
| UPTMode                                                     | Default = NOTSET…                                                                       |

因此,在R中,只使用DBCName。下面添加可选的Database关键字。

代码语言:javascript
复制
# KEYWORD APPROACH
con <- DBI::dbConnect(odbc::odbc(),
                      Driver   = "Teradata Database ODBC Driver 16.20",
                      DBCName  = "00.11.22.333",
                      Database = "myDatabase",
                      UID      = rstudioapi::askForPassword("Database user"),
                      PWD      = rstudioapi::askForPassword("Database password"))

# CONNECTION STRING APPROACH
con_str = "Driver={Teradata Database ODBC Driver 16.20};DBCName=00.11.22.333;Database=myDatabase;"

con <- DBI::dbConnect(odbc::odbc(),
                      .connection_string = con_str,
                      UID = rstudioapi::askForPassword("Database user"),
                      PWD = rstudioapi::askForPassword("Database password")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59215184

复制
相关文章

相似问题

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