beeline -e "SELECT from_unixtime(cast(utc_to_timestamp(one.`time`/1000,'GMT-8')as bigint),'yyyy-MM-dd') FROM my_table one;" 不能识别one . /
时间: 2024-04-23 11:25:26 浏览: 104
可能是你的 SQL 语句中出现了一些语法错误,可以尝试以下几个步骤来解决:
1. 确认你的表名是否正确。可能是表名拼写错误或者表不存在导致无法识别 one。
2. 确认你的 SQL 语句是否正确,语法是否规范。可以在命令行中执行简单的 SQL 语句,以此确认语法的正确性。
3. 如果你使用的是Beeline客户端,那么你需要使用 `-n` 参数来指定数据库名称,例如:`beeline -u jdbc:hive2://localhost:10000 -n mydatabase -e "SELECT * FROM my_table"`,这样才能正确识别表名。
希望这些提示能够帮到你。如果还有问题,请随时问我。
相关问题
beeline -e ‘from_unixtime(cast(utc_to_timestamp(one.time/1000,'GMT-8')as bigint),'yyyy-MM-dd') ’ 不能识别one . /
你的 beeline 命令中出现了语法错误。在 SQL 语句中引用表的列名时,需要使用正确的语法,例如 `表名.列名` 或 `表别名.列名`。在你的 SQL 语句中,你使用了表别名 one,但是没有指定该别名所对应的表,因此出现了语法错误。
以下是一个示例 SQL 语句,其中使用了表别名 one,并指定了该别名所对应的表:
```
SELECT from_unixtime(cast(utc_to_timestamp(one.time/1000,'GMT-8')as bigint),'yyyy-MM-dd')
FROM my_table one;
```
在这个示例中,表别名 one 对应的是表 my_table,因此可以正确地引用 one.time 列。
请根据你的实际情况修改 SQL 语句,并确保使用正确的语法引用表的列名。
beeline -e "SELECT from_unixtime(cast(utc_to_timestamp(one.time/1000,'GMT-8')as bigint),'yyyy-MM-dd') FROM my_table one;" 不能识别one . /,但使用beeline -f 就可以执行
根据您提供的信息,我可以初步判断是因为在beeline命令行中,使用-e参数后跟的是一个字符串,而不是一个文件,因此无法使用one变量。
而在使用-f参数时,beeline会读取指定的脚本文件,并将其中的内容作为输入,因此可以使用one变量。
如果您仍然想使用-e参数,并且需要使用变量,可以尝试在字符串中使用双引号,例如:
beeline -e "SELECT from_unixtime(cast(utc_to_timestamp(\${one}.time/1000,'GMT-8')as bigint),'yyyy-MM-dd') FROM my_table;" --hivevar one=one
其中--hivevar参数指定了要传递给查询的变量one,并将其设置为one。在查询中,可以使用${one}来引用该变量。
阅读全文