2017-06-02 70 views
1

我想從下面的配置單元表中導出數據,但它生成的文件帶有製表符作爲分隔符。導出時可以將分隔符指定爲逗號或製表符嗎?配置單元-e帶分隔符

hive -e " 
use default; 
set hive.cli.print.header=true; 
select * from test1; 
    " > /temp/test.txt (or .csv) 

感謝 Ĵ

+1

[出口蜂巢表到CSV在HDFS]的可能的複製(https://開頭計算器。 com/questions/30224875/exporting-hive-table-to-csv-in-hdfs) – alejandrogiron

回答

1

可以通過管道將您的數據,並使用一個簡單的sed命令將數據轉換爲所需的輸出格式。在sed命令下面用逗號替換選項卡。默認輸出是Tab。您可以相應地更改輸出。

hive -e "use default;set hive.cli.print.header=true;select * from test1;" | sed 's/[\t]/,/g' >/temp/test.csv 
+0

謝謝Prabhat。我確實嘗試了sed命令,我看到的是它在標籤的末尾加逗號.ike ABC,123,2016,..而不是命令,如果我想用pipe作爲分隔符,我可以使用? – sam

+0

hive -e「use default; set hive.cli.print.header = true; select * from test1;」 | sed's/[\ t]/|/g'> /temp/test.csv 這將替換管道標籤 –

0

或者到@Prabhat Ratnala解決方案,這是確定的,你可以使用這個:

INSERT OVERWRITE LOCAL DIRECTORY '/temp/your_dir' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM test1;

+0

謝謝..我之前嘗試過,使用插入覆蓋,它調用地圖紅色作業並且它創建文件 – sam

+0

的多個拆分當然,然後您使用cat將它們全部合併到一個文件中。 – Andrew

+0

許多文件,但完全平行 – leftjoin