还是报错:ParseException line 1:30 cannot recognize input near 'yinzhou' '.' '+' in table name
时间: 2023-12-22 20:05:32 浏览: 76
非常抱歉,我的回答还是有误。这个错误的原因是在查询表数据量时,SQL 语句中的分号(;)被放在了 awk 命令之后,导致 Hive 无法识别语句的结尾。
因此,需要将第 10 行代码修改为以下形式:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.\`$table\`"| awk '{if(NR>2)print}')
```
这样就可以避免在语句中放置分号,避免出现语法错误。同时,建议使用 `count(*)` 代替 `count()`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。
相关问题
还是报错 FAILED: ParseException line 1:29 cannot recognize input near 'yinzhou' '.' '+' in table name
很抱歉,我的回答有误。这个错误实际上是因为在 Hive 语句中没有使用反引号(`)来包含表名,导致 Hive 无法识别表名中的字符。
因此,需要将第 10 行代码修改为以下形式:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.\`$table\`;"| awk '{if(NR>2)print}')
```
这样就可以在表名前后加上反引号,避免出现语法错误。同时,建议使用 `count(*)` 代替 `count()`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。
上面这个脚本报错:FAILED: ParseException line 1:29 cannot recognize input near 'yinzhou' '.' '+' in table name
这个报错的原因是在查询表数据量的时候,拼接表名时出现了语法错误。具体来说,错误信息中提到了一个不能识别的字符 "+",这是因为在拼接字符串时使用了加号,而 Hive 中是使用竖线 "|" 来连接字符串的。
为了解决这个问题,需要修改脚本中的第 10 行代码,将拼接字符串的加号改为竖线,即将:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count() from yinzhou.$table;")
```
修改为:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.$table"| awk '{if(NR>2)print}')
```
同时,建议在查询数据量时使用 `count(*)`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。
阅读全文