2013-08-16 2 views
1

현재 하이브 데이터를 csv 파일로 내보내려고하고 있는데 where 절을 추가해야만 성공적으로 Csv 파일을 내보낼 수 있습니다.where 절을 사용하여 csv에 하이브 데이터 출력

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 

나는 문제가 원인 일 수 있다고 생각 "잘못된 테이블 별칭 또는 열 참조"

말하는 오류가 날짜 주위에 따옴표로하지만 나는 그 조합을 찾을 수 없습니다. 도와주세요!

답변

3

보인다. 이중 따옴표를 사용하여 대신 쿼리를 래핑하여 쿼리가 끝나는 위치를 명확하게 지정하십시오.

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

희망이 있습니다.

1

하이브 데이터 형식 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 -e "select * from table where timestamp > '2013-08-19 00:00:00';exit;" | sed 's/[\t]/,/g' > outputfile.csv 
+0

답장을 보내 주셔서 감사합니다. 전체 타임 스탬프를 사용하도록 where 절을 조정할 수 있지만 따옴표 문제에 대한 제안 사항이 있습니까? 후속 조치에 다시 한 번 감사드립니다! – AAA

+0

타임 스탬프로 제공하는 데이터 유형은 무엇입니까? 데이터 유형은 타임 스탬프에 대해 ** bigint **이어야합니다. 테이블 생성 쿼리와 수정 된 선택 쿼리를 제공하십시오. 가능한 경우 몇 가지 샘플 데이터를 제공하십시오. –

+0

다음과 같은 쿼리를 사용하십시오 : ** hive -e "select * from table where timestamp> '2013-08-19 00 : 00 : 00'; 종료;" | sed의/[\ t] /,/g '> outputfile.csv **. 지금 작동하면 저희에게 알려주십시오. –