2017-12-27 18 views
0

私はハイブテーブルを照会し、出力結果を変数として保存するためにbeeline cliを試行しています。 真っすぐコマンドを使用する:出力内のヘッダーを削除します

このコマンドを使用
beeline -u connection_string -n user_name -w password_file \ 
-e "select count(*) from db.table_name" 

、私は、現在の出力結果を得る:私は必要なものの

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

として結果:Record count:80785

私が使用しているもう一つのコマンドは次のとおりです。

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 

を使用した場合は、このフォーマットを使用して

YOURコマンドを考えてみましょう

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

のようになります(区切り文字はです)このように見えます。値が特殊なcharや改行を含んでいる場合は、これらの3つが有効であることを覚えておいてください。 disable.quoting.for.svをtrueに設定すると、引用符を無効にすることができます。

CSVおよびTSV

CSV、TSV これら二つのフォーマットは、TSVのCSVとタブのカンマ区切り値の間で異なるだけを用いたいくつかのより多くのオプション。 csvファイルを使用する場合、データはCSVまたはTSVを使用している間だけを用心この

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

と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

ここでの例は単なる例であり、すべての選択クエリで使用できるソリューションが必要です。 –

+0

@SandeepSingh私はあなたがチェックアウトできるようになりました。 –

1

ビーラインは、あなたのケースではcommand line options.

の束を持って、あなたが使用することができます。

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

'dsv'はこれを使用している点と利点を説明できますか? –

+0

' dsv'はデリミタで区切られた値を表していますが、あなたの場合は特別な利点はありません。ハイフンとプラス=> '+ ----- +' – philantrovert

関連する問題