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        ,
相关推荐
卷毛迷你猪9 小时前
快速实验篇(B07 )Session 会话化与序列
大数据·hive·hadoop
卷毛迷你猪10 小时前
快速实验篇(B08)搜索词分析实战
大数据·hive·hadoop
卷毛迷你猪16 小时前
快速实验篇(B10)品类共现与关联规则实战
大数据·hive·hadoop
卷毛迷你猪16 小时前
快速实验篇(B09)城市维度分析,均匀随机字段的识别与证明
大数据·hive·hadoop
卷毛迷你猪2 天前
快速实验篇(B06)页面单跳转化率
大数据·hive·hadoop
卷毛迷你猪2 天前
快速实验篇(B02)DWD 生产级升级
大数据·hive·hadoop
卷毛迷你猪2 天前
快速实验篇(B03) 用户行为漏斗与转化率
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B01)用户行为日志画像与 DWD 标准化
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B04) 热门品类 Top10 与加权排名
大数据·hive·hadoop
CarIise5 天前
Spring Boot整合MyBatis与文件上传:从分层架构到文件上传下载实战
数据仓库·hive·hadoop