我在r中创建了一对表(Dataframe),需要上传到cloudera impala,我正在使用dbi包连接impala。我举个例子:
df<-Dataframe(x)
如何将df作为表插入到impala中?
我知道使用dbsendupdate()可以做到这一点,所以我做了如下工作:
dbsendupdate(dbh,paste0(“create table db.df as select*from”,db))
但运气不好。
关于如何用这个函数或者我可以使用的任何其他函数来处理这个问题,有什么想法吗?
1条答案
按热度按时间hof1towb1#
我认为你应该改用这个函数
dbCreateTable
或者dbWriteTable()
从DBI
包裹。在你的情况下,你可以
df
在以下方面:哪里
con
是你的数据库连接,"impala_new_df"
是impala中所需的新表的名称,以及df
是从中写入的Dataframe。显然,您需要对impala示例进行读/写访问才能这样做。我相信
dbSendUpdate
函数来自包RJDBC
. 只有当你的连接是jdbc
,不是odbc
. 而且,我不相信你用paste0
会按照你想要的方式行事。以下是有关r中数据库的有用参考:https://db.rstudio.com/odbc/
更新
既然你用的是
RJDBC
,我认为以下应该是有效的:类似于这里的解决方案:https://stackoverflow.com/a/35407579/6535514
如果这不管用,我会开始调查包裹
implyr
其他的方法