dbplyr copy_to不将表保存到数据库

时间:2018-01-10 19:43:27

标签: r dplyr tidyverse dbplyr

我正在尝试将本地数据框从R复制到我的db2数据库。我有权写入表格,我已经验证连接正常。

我正在使用:

copy_to(connection, data.frame, name = my_table_name)

我收到以下错误,但对我来说没有意义。它所说的对象不存在是我想要创建的对象。我做错了什么?

  

typeof(x)中的错误:object' my_table_name'找不到

2 个答案:

答案 0 :(得分:3)

默认情况下,copy_to()尝试创建一个临时表。一种选择是添加参数temporary = FALSE,以克服TEMPORARY令牌错误。更好的解决方案是用于连接的软件包,希望它是odbc软件包,以增加对DB2数据库的支持。换句话说,odbc将需要知道正确创建临时表所需的特定命令是什么。解决此问题后,copy_to()将起作用。如果确实使用的是odbc软件包,我建议您在该软件包的仓库中打开GitHub问题。

答案 1 :(得分:0)

这可能是由DBI而非dbplyr引起的。参见here。有一种解决方法可以利用DBI包。您可以在here上找到更多详细信息。

总结:DBI软件包具有一个写表命令。它使用相同的连接,但是还需要将输入表名称包装在SQL()中。

我测试了以下内容,并按预期工作。

data(iris)
DBI::dbWriteTable(connection, SQL("database.schema.iris"), iris)