Hive 当csv文件具有分隔符值(例如逗号)作为字段值时,如何将其导入配置单元表?
我想将csv文件导入配置单元表。csv文件的字段值中包含逗号(,)。我们如何逃避它?您可以根据以下条件使用CSV SerDe 如果有逗号的字段在带引号的字符串中Hive 当csv文件具有分隔符值(例如逗号)作为字段值时,如何将其导入配置单元表?,hive,Hive,我想将csv文件导入配置单元表。csv文件的字段值中包含逗号(,)。我们如何逃避它?您可以根据以下条件使用CSV SerDe 如果有逗号的字段在带引号的字符串中 sam,1,"sam is adventurous, brave" bob,2,"bob is affectionate, affable" CREATE EXTERNAL TABLE csv_table(name String, userid BIGINT,comment STRING) ROW FORMAT SERDE 'org.
sam,1,"sam is adventurous, brave"
bob,2,"bob is affectionate, affable"
CREATE EXTERNAL TABLE csv_table(name String, userid BIGINT,comment STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
"separatorChar" = ",",
"quoteChar" = "\""
)
STORED AS TEXTFILE
LOCATION 'location_of_csv_file';
如果有逗号的字段转义如下
sam,1,sam is adventurous\, brave
bob,2,bob is affectionate\, affable
CREATE EXTERNAL TABLE csv_table(name String, userid BIGINT, comment STRING)
ROW FORMAT serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
"separatorChar" = ",",
"escapeChar" = "\\"
)
STORED AS TEXTFILE
LOCATION '/user/cloudera/input/csv';
在这两种情况下,输出如下:
hive> select * from csv_table;
OK
sam 1 sam is adventurous
bob 2 bob is affectionate
您可以根据以下条件使用CSV SerDe 如果有逗号的字段在带引号的字符串中
sam,1,"sam is adventurous, brave"
bob,2,"bob is affectionate, affable"
CREATE EXTERNAL TABLE csv_table(name String, userid BIGINT,comment STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
"separatorChar" = ",",
"quoteChar" = "\""
)
STORED AS TEXTFILE
LOCATION 'location_of_csv_file';
如果有逗号的字段转义如下
sam,1,sam is adventurous\, brave
bob,2,bob is affectionate\, affable
CREATE EXTERNAL TABLE csv_table(name String, userid BIGINT, comment STRING)
ROW FORMAT serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
"separatorChar" = ",",
"escapeChar" = "\\"
)
STORED AS TEXTFILE
LOCATION '/user/cloudera/input/csv';
在这两种情况下,输出如下:
hive> select * from csv_table;
OK
sam 1 sam is adventurous
bob 2 bob is affectionate