非Hive Metastore Server节点执行load命令时出现“cannot recognize input near '<EOF>' '<EOF>' '<EOF>' in switch database statement”

我的脚本如下

dbname=bigdata
month=$(date -d 0"month ago"${date} +%Y%m)
#删除分区及数据
ssh root@bda1node06 "hive -e 'use "${dbname}";ALTER TABLE tablename DROP IF EXISTS PARTITION (pt="${month}")'"
#创建分区
ssh root@bda1node06 "hive -e 'use "${dbname}";ALTER TABLE tablename ADD PARTITION (pt="${month}")'"
#把HDFS上的数导入到HIve表中
ssh root@bda1node06 "hive -e "use ${dbname};load data inpath '/data/roaddist/*' overwrite into table tablename partition(pt=${month})""

原因分析:使用双引号进行包括,则"hive -e"会认为后面的内容作为一个单独的参数传给hive 否则会解析成为多个参数造成错误。

liunx的特殊字符转义规则

传递参数全部使用""引号,参数内有"和`,需要用转义.除此之外还有^、] 、[ 等 

原文地址:https://www.cnblogs.com/zyanrong/p/15266664.html