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 就可以执行
时间: 2024-04-23 16:23:39 浏览: 140
根据您提供的信息,我可以初步判断是因为在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}来引用该变量。
相关问题
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 . /
根据你提供的 SQL 语句,我发现其中的 `one` 是一个表别名,用来指代 `my_table` 这个表。但是,你的 SQL 语句中缺少了要查询的字段名,导致无法正确执行。
你可以尝试修改 SQL 语句,例如:
```
beeline -e "SELECT one.id, from_unixtime(cast(utc_to_timestamp(one.time/1000,'GMT-8')as bigint),'yyyy-MM-dd') as date FROM my_table one;"
```
这个 SQL 语句中,我添加了 `one.id` 作为查询的字段,并使用 `as` 关键字给查询结果中的日期字段命名为 `date`。你可以根据实际情况修改查询的字段和字段名。
希望这个解答能够帮到你。如果还有问题,请随时问我。
阅读全文