2

我目前正在尝试将 Hive 数据导出到 csv 文件,并且可以成功完成,直到我必须添加 where 子句。例如,这有效:

 hive -e 'select * from table' | sed 's/[\t]/,/g'  > outputfile.csv

但如果我试试这个:

 hive -e 'select * from table where timestamp > '1-Aug-2013'' | sed 's/[\t]/,/g'  > outputfile.csv

我收到一条错误消息,提示“无效的表别名或列引用”

我认为问题可能是由于日期周围的引号引起的,但我找不到有效的组合。请帮忙!

谢谢

4

2 回答 2

3

看起来您正在使用单引号来包装查询和查询中的字符串文字。尝试使用双引号来包装查询,以便清楚查询结束的位置。

hive -e "select * from table where timestamp > '1-Aug-2013'" | sed 's/[\t]/,/g'  > outputfile.csv

希望有帮助。

于 2013-08-19T07:44:57.760 回答
1

请参阅 Hive 数据类型链接

时间戳是在 Hive 0.8.0 中引入的。

Supported conversions:
Integer numeric types: Interpreted as UNIX timestamp in seconds
Floating point numeric types: Interpreted as UNIX timestamp in seconds
with decimal precision.
Strings: JDBC compliant java.sql.Timestamp format "YYYY-MM-DD HH:MM:SS.fffffffff"
(9 decimal place precision)

根据它,您的时间戳格式不支持配置单元。

示例查询在这里:

 hive -e "select * from table where timestamp > '2013-08-19 00:00:00';exit;" | sed 's/[\t]/,/g' > outputfile.csv
于 2013-08-18T17:27:46.980 回答