我目前正在尝试将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
我收到错误消息“无效的表别名或列引用”
我认为这个问题可能是由于日期的引用,但我找不到有效的组合。请帮忙!
谢谢
答案 0 :(得分:3)
看起来您正在使用单引号将查询和字符串文字包装在查询中。尝试使用双引号来包装查询,以便清楚查询结束的位置。
hive -e "select * from table where timestamp > '1-Aug-2013'" | sed 's/[\t]/,/g' > outputfile.csv
希望有所帮助。
答案 1 :(得分:1)
请参阅Hive数据类型Link。
时间戳在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不支持你的时间戳格式。
示例查询在此处:
hive -e "select * from table where timestamp > '2013-08-19 00:00:00';exit;" | sed 's/[\t]/,/g' > outputfile.csv