用于Hive查询的R系统命令

时间:2019-01-11 09:24:54

标签: r shell hive

由于rjdbchive2不可用,Im在R中使用system命令,如下所示,以便在本地运行配置单元查询。

ret_text <- system(paste0("hive -S -e ","'", hql,"'"), wait = TRUE,intern=TRUE)

但是该命令的格式如下,发送给system。由于额外的单引号执行失败。

'hive -S -e'将INSERT INTO abc(col1,col2)values(1,'2019-01-11')''

理想情况是,如下面所示,它应该工作

“ hive -S -e'将INSERT INTO abc(col1,col2)values(1,'2019-01-11')'”

(由于涉及引号,因此无法正确格式化)

有什么办法解决吗?

1 个答案:

答案 0 :(得分:0)

我可以通过转义单引号和如下使用双引号来解决该问题

  hql=gsub("'","\'",hql)
  ret_text <- system(paste0("hive -S -e ","\"", hql,"\""), wait = TRUE,intern=TRUE)

首先在sql中转义所有单引号,然后使用双引号而不是单引号来包装sql(也转义包装双引号)