Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用DBI将R连接到Teradata,以便与knitr一起使用_Sql_R_Knitr_Teradata_R Dbi - Fatal编程技术网

Sql 使用DBI将R连接到Teradata,以便与knitr一起使用

Sql 使用DBI将R连接到Teradata,以便与knitr一起使用,sql,r,knitr,teradata,r-dbi,Sql,R,Knitr,Teradata,R Dbi,我正在尝试在knitr中使用SQL引擎: 文档中指出,“要使用knitr SQL引擎,首先需要建立到数据库的DBI连接” 它提供了以下示例: library(DBI) db <- dbConnect(RSQLite::SQLite(), dbname = "sql.sqlite") 但是是否存在DBI连接到Teradata的Exmaple?您不能连接到DBI包-它只定义了一个接口(想想模板),DBI兼容包必须实现这个接口。您应该做的是使用RJDBC包——它实现了DBI方法。不要使用ROD

我正在尝试在knitr中使用SQL引擎:

文档中指出,“要使用knitr SQL引擎,首先需要建立到数据库的DBI连接”

它提供了以下示例:

library(DBI)
db <- dbConnect(RSQLite::SQLite(), dbname = "sql.sqlite")

但是是否存在DBI连接到Teradata的Exmaple?

您不能连接到DBI包-它只定义了一个接口(想想模板),DBI兼容包必须实现这个接口。您应该做的是使用RJDBC包——它实现了DBI方法。不要使用RODBC,因为它没有实现DBI方法——我猜您需要基于您的问题的DBI。要使用RJDBC创建到Teradata的连接,需要遵循以下几个步骤

您需要从Teradata下载JDBC驱动程序。您需要成为Teradata的客户才能获得此服务

如果下载并查看zip或tar文件,您将发现两个jar文件:

  • terajdbc4.jar
  • tdgssconfig.jar
将这些文件解压缩到系统上的已知位置

现在您需要安装install.packages('RJDBC')包和依赖项

由于JDBC是基于Java的,请确保安装了最新的Java运行时。你可以在java.com上了解到这一点——只是要注意,你得到的java版本(32或64位)与你在R中得到的版本相同。上次我检查java站点时,没有尝试为你解决这个问题。如果必须安装Java,请确保重新启动R会话

现在,您应该能够加载RJDBC库并创建连接—您需要知道要连接到的teradata系统的ip/url,以及用户名和密码。您还需要指定要连接到的数据库:

library(RJDBC)

jars <- c("[path to jar]/terajdbc4.jar", "[path to jar]/tdgssconfig.jar")
drv <- JDBC("com.teradata.jdbc.TeraDriver",jars)
db <- "jdbc:teradata://[ip of teradata system]/TMODE=TERADATA,charset=UTF8"
conn <- dbConnect(drv, db, username, password, database )
库(RJDBC)

jars您不能连接DBI包——它只定义了一个接口(想想模板),DBI兼容包必须实现这个接口。您应该做的是使用RJDBC包——它实现了DBI方法。不要使用RODBC,因为它没有实现DBI方法——我猜您需要基于您的问题的DBI。要使用RJDBC创建到Teradata的连接,需要遵循以下几个步骤

您需要从Teradata下载JDBC驱动程序。您需要成为Teradata的客户才能获得此服务

如果下载并查看zip或tar文件,您将发现两个jar文件:

  • terajdbc4.jar
  • tdgssconfig.jar
将这些文件解压缩到系统上的已知位置

现在您需要安装install.packages('RJDBC')包和依赖项

由于JDBC是基于Java的,请确保安装了最新的Java运行时。你可以在java.com上了解到这一点——只是要注意,你得到的java版本(32或64位)与你在R中得到的版本相同。上次我检查java站点时,没有尝试为你解决这个问题。如果必须安装Java,请确保重新启动R会话

现在,您应该能够加载RJDBC库并创建连接—您需要知道要连接到的teradata系统的ip/url,以及用户名和密码。您还需要指定要连接到的数据库:

library(RJDBC)

jars <- c("[path to jar]/terajdbc4.jar", "[path to jar]/tdgssconfig.jar")
drv <- JDBC("com.teradata.jdbc.TeraDriver",jars)
db <- "jdbc:teradata://[ip of teradata system]/TMODE=TERADATA,charset=UTF8"
conn <- dbConnect(drv, db, username, password, database )
库(RJDBC)

jars另外,如果要在knitr中使用SQL代码块引擎,knitr的当前版本与RJDBC的当前版本不兼容。RJDBC未实现DBI方法dbGetRowCount。作为一个快速修复,我删除了对行数/的检查,现在您可以从github的mattwg/knitr安装该包。对于某些用例,它可能会失败。我将尝试让RJDBC的维护人员实现该方法

另外,如果要在knitr中使用SQL代码块引擎,则knitr的当前版本与RJDBC的当前版本不兼容。RJDBC未实现DBI方法dbGetRowCount。作为一个快速修复,我删除了对行数/的检查,现在您可以从github的mattwg/knitr安装该包。对于某些用例,它可能会失败。我将尝试让RJDBC的维护人员实现该方法

我发布的解决方案适用于Teradata。我使用odbc包和Windows odbc数据源管理员。下面是一个RMarkdown示例:

```{r}
# Unfortunately, odbc is not on CRAN yet
# So we will need devtools
# install.packages(devtools)
library(devtools)
devtools::install_github("rstats-db/odbc")

# Get connection info from the Windows ODBC Data Source Administrator using the name you set manually. 
# If you don't know what this is, just search in the windows start menu for     "ODBC Data Source Administrator"
con <- dbConnect(odbc::odbc(), 'MyDataWarehouse')
```

```{sql connection = con, output.var = result}
-- This is sql code, comments need to be marked accordingly
SELECT * FROM SOMETABLE LIMIT 200;
```

```{R}
# And the result is available in the next chunk!
result
```
`{r}
#不幸的是,odbc还没有在CRAN上
#所以我们需要开发工具
#安装程序包(devtools)
图书馆(devtools)
devtools::install_github(“rstats db/odbc”)
#使用手动设置的名称从Windows ODBC数据源管理员获取连接信息。
#如果您不知道这是什么,只需在windows开始菜单中搜索“ODBC数据源管理员”
con我发布的解决方案适用于我的Teradata。我使用odbc包和Windows odbc数据源管理员。下面是一个RMarkdown示例:

```{r}
# Unfortunately, odbc is not on CRAN yet
# So we will need devtools
# install.packages(devtools)
library(devtools)
devtools::install_github("rstats-db/odbc")

# Get connection info from the Windows ODBC Data Source Administrator using the name you set manually. 
# If you don't know what this is, just search in the windows start menu for     "ODBC Data Source Administrator"
con <- dbConnect(odbc::odbc(), 'MyDataWarehouse')
```

```{sql connection = con, output.var = result}
-- This is sql code, comments need to be marked accordingly
SELECT * FROM SOMETABLE LIMIT 200;
```

```{R}
# And the result is available in the next chunk!
result
```
`{r}
#不幸的是,odbc还没有在CRAN上
#所以我们需要开发工具
#安装程序包(devtools)
图书馆(devtools)
devtools::install_github(“rstats db/odbc”)
#使用手动设置的名称从Windows ODBC数据源管理员获取连接信息。
#如果您不知道这是什么,只需在windows开始菜单中搜索“ODBC数据源管理员”

con下载JDBC驱动程序不需要Teradata客户,只需在Teradata的开发者交换上注册一次即可。下载JDBC驱动程序不需要Teradata客户,只需在Teradata的开发者交换上注册一次即可。