由于rjdbc
和hive2
不可用,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')'”
(由于涉及引号,因此无法正确格式化)
有什么办法解决吗?
答案 0 :(得分:0)
我可以通过转义单引号和如下使用双引号来解决该问题
hql=gsub("'","\'",hql)
ret_text <- system(paste0("hive -S -e ","\"", hql,"\""), wait = TRUE,intern=TRUE)
首先在sql中转义所有单引号,然后使用双引号而不是单引号来包装sql(也转义包装双引号)