2017-12-27 35 views
0

하이브 테이블을 조회하고 출력 결과를 변수로 저장하기 위해 beeline cli를 시도하고 있습니다.출력에서 ​​헤더를 제거하십시오.

+---------------+--+ 
| record_count | 
+---------------+--+ 
| 80785   | 
+---------------+--+ 

내가 같은 결과를 필요로하는 동안 : Record count:80785

또 다른 명령을 내가 사용은 다음과 같습니다 사용하여 직선의 명령으로

beeline -u connection_string -n user_name -w password_file \ 
-e "select count(*) from db.table_name" 

이 명령을 사용하여, 나는 현재의 출력 결과를 얻기

beeline -u connection_string -n user_name -w password_file \ 
-e "select * from db.table_name;” > result.csv 

다시 t의 결과를 표시합니다. abular 형식 데이터는 |으로 구분됩니다.

기본적으로 beeline은 기본적으로 헤더 (table_name.column_name)를 반환하고 표 형식의 데이터를 반환합니다. 반면, 나는 이것을 제거하고 하이브 CLI와 같은 결과를 얻고 싶습니다.

답변

1

이를 조명 인수 --showHeader=false --outputformat=tsv2를 사용할 수 있습니다.

id|value|comment 
1|Value1|Test comment 1 
2|Value2|Test comment 2 
3|Value3|Test comment 3 

귀하의 데이터 | DSV를 사용하는 경우 tsv2이

id value comment 
1 Value1 Test comment 1 
2 Value2 Test comment 2 
3 Value3 Test comment 3 

를 사용한 경우이 형식을 사용하여

당신의 명령을 고려

beeline --showHeader=false --outputformat=tsv2 \ 
-u connection_string -n user_name -w password_file \ 
-e "select count(*) from db.table_name" 

같은 것 (구분 기호입니다) 이렇게 보일거야. 값이 특수 문자 또는 새 행을 포함하고 있으면이 세 가지가 값 주위에 작은 따옴표로 사용 가능하다는 것을 기억하십시오. disable.quoting.for.sv를 true로 설정하면 인용을 비활성화 할 수 있습니다.

CSV AND TSV

CSV, TSV 이 두 포맷 TSV 대한 CSV 및 탭의 쉼표 값 사이의 분리와 다를뿐 사용하기 좀 더 옵션.

, 당신을 CSV를 사용하는 경우, 데이터는이

'id','value','comment' 
'1','Value1','Test comment 1' 
'2','Value2','Test comment 2' 
'3','Value3','Test comment 3' 

모양을 그리고 CSV 또는 TSV를 사용하는 동안 TSV는 그냥를 조심 후,

'id' 'value' 'comment' 
'1' 'Value1' 'Test comment 1' 
'2' 'Value2' 'Test comment 2' 
'3' 'Value3' 'Test comment 3' 

을 사용하는 경우 작은 따옴표는 항상 값으로 둘러싸여있을 것이고 당신은 그것을 제거 할 수 없기 때문에 몇몇 경우에 약간의 문제가 발생할 수 있습니다.

위의 세부 설명을 통해 원하는 모든 가능한 케이스를 다룰 수 있기를 바랍니다.

자세한 내용은 Apache Beeline Wiki page을 방문하십시오. 건배!!

+1

으로 인쇄하십시오.'tsv2'의 약자와 장점을 설명해주십시오. –

+0

여기 카운트는 단지 예일 뿐이며, 모든 select 쿼리에서 사용할 수있는 솔루션이 필요합니다. –

+0

@SandeepSingh 체크 아웃 할 수있는 답을 업데이트했습니다. –

1

최단 거리 귀하의 경우 command line options.

의 무리를 가지고, 당신은 사용할 수 있습니다

beeline --outputformat=dsv --showheader=false \ 
-e "select count(*) from db_name.table_name" 
+0

'dsv'가 의미하는 점은 무엇입니까? –

+0

'dsv'는 구분 기호로 구분 된 값을 나타내며, 베라인과 같은 테이블 형 구조를 제외하고는 특별한 이점이 없습니다. 하이픈과 플러스 =>'+ ----- +' – philantrovert