2016-09-21 54 views
2

我必須將數據從一個蜂巢表中哪些字段用雙引號括一個CSV文件導出。輸出蜂巢查詢結果爲csv用引號括起來

到目前爲止,我能夠生成一個CSV文件,而不使用下面的查詢

INSERT OVERWRITE DIRECTORY '/user/vikas/output' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
SELECT QUERY 

輸出生成的模樣

1,Vikas Saxena,Banking,JL5 

但是報價,我需要的輸出

"1","Vikas Saxena","Banking","JL5" 

我試着將查詢改爲

INSERT OVERWRITE DIRECTORY '/user/vikas/output' 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "separatorChar" = ",", 
    "quoteChar"  = "\"", 
    "escapeChar" = "\\" 
) 
SELECT QUERY 

但它會顯示錯誤

Error while compiling statement: FAILED: ParseException line 1:0 cannot recognize input near 'ROW' 'FORMAT' 'SERDE' 
+0

那麼爲什麼你不創建映射到該目錄的EXTERNAL TABLE,插入它,然後刪除表? –

+0

使用配置單元連接。即concat(「\」「,col,」\「」) – Sanket

回答

0

創建外部表:

CREATE EXTERNAL TABLE new_table(field1 type1, ...) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
"separatorChar" = ",", 
"quoteChar" = "\"" 
) 
STORED AS TEXTFILE 
LOCATION '/user/vikas/output'; 

然後選擇到該表:

insert into new_table select * from original_table; 

您的CSV然後在磁盤上/用戶/ vikas/output