2016-09-21 2 views
2

フィールドが二重引用符で囲まれたcsvファイル内のハイブテーブルからデータをエクスポートする必要があります。csvとして出力ハイブクエリ結果が引用符で囲まれた

これまでのところ、私は次のクエリ

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

を使用して出力引用符なしのCSVを生成することができています。しかし、私は

"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を作成し、そのディレクトリにINSERTしてからDROPテーブルを作成するのはなぜですか? –

+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

関連する問題