Hive 导入csv文件,数据中包含逗号的问题

问题

今天 Hive 导入 csv 文件时,开始时建表语句如下:

sql 复制代码
CREATE TABLE IF NOT EXISTS test.student (
    name STRING COMMENT '姓名',
    age STRING COMMENT '年龄',
    gender STRING COMMENT '性别',
    other_info STRING COMMENT '其他信息'
)
COMMENT '学生信息表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

然后导入 csv 文件,发现数据串列了,查看数据发现是因为数据中包含逗号的问题,因为 csv 文件列分隔符就为逗号,所以直接导入到表中会使数据串列。

解决办法

查询资料发现是建表语句的问题,所以我们要需要在建表的时候指定列包围符号。如下:

sql 复制代码
CREATE TABLE IF NOT EXISTS test.student (
    name STRING COMMENT '姓名',
    age STRING COMMENT '年龄',
    gender STRING COMMENT '性别',
    other_info STRING COMMENT '其他信息'
)
COMMENT '学生信息表'
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
    'separatorChar' = ',',
    'quoteChar' = '"',
    'escapeChar' = '\\'
)
STORED AS TEXTFILE;

使用 OpenCSVSerde 作为数据序列化程序,并通过 SERDEPROPERTIES 指定 separatorChar(分隔符)和 quoteChar(引号包围符号)以及 escapeChar (转义字符)的值。

默认 csv 文件的分隔符、引号和转义字符(如果未指定)

DEFAULT_ESCAPE_CHARACTER \
DEFAULT_QUOTE_CHARACTER  "
DEFAULT_SEPARATOR        ,
相关推荐
天地风雷水火山泽14 小时前
二百六十六、Hive——Hive的DWD层数据清洗、清洗记录、数据修复、数据补全
数据仓库·hive·hadoop
大数据深度洞察15 小时前
Hive企业级调优[2]—— 测试用表
数据仓库·hive·hadoop
lzhlizihang15 小时前
使用sqoop将mysql数据导入到hive报错ClassNotFoundException、Zero date value prohibited等错误
hive·报错·sqoop
goTsHgo15 小时前
Hive自定义函数——简单使用
大数据·hive·hadoop
江畔独步21 小时前
Hive内置集合函数-size,map_keys,map_values,sort_array,array_contains
数据仓库·hive·hadoop
天地风雷水火山泽21 小时前
二百六十五、Hive——目前Hive数仓各层表样例
数据仓库·hive·hadoop
棉花糖灬21 小时前
Hive常用函数
数据仓库·hive·hadoop
mizuhokaga2 天前
Hive parquet表通过csv文件导入数据
数据仓库·hive·hadoop
小王是个弟弟2 天前
HQL-计算不一样的 MUV
数据库·hive·sql