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        ,
相关推荐
二进制_博客3 小时前
spark on hive 还是 hive on spark?
大数据·hive·spark
D明明就是我17 小时前
Hive 知识点梳理
数据仓库·hive·hadoop
工作中的程序员4 天前
hive sql优化基础
hive·sql
风跟我说过她4 天前
Sqoop的安装与配置
hive·hadoop·经验分享·centos·hbase·sqoop
DashingGuy8 天前
hive、spark任务报错或者异常怎么排查以及定位哪段sql
hive·sql·spark
秦JaccLink12 天前
Hive语句执行顺序详解
数据仓库·hive·hadoop
AI算力网络与通信12 天前
大数据领域 Hive 数据仓库搭建实战
大数据·数据仓库·hive·ai
工业互联网专业15 天前
基于大数据hive的银行信用卡用户的数仓系统的设计与实现_django
大数据·hive·django·毕业设计·源码·课程设计·数仓系统
顧棟15 天前
【Hive实战】hive-testbench的调研
数据仓库·hive·hadoop
emmm...15 天前
hive连不上,报错9000拒绝连接
数据仓库·hive·hadoop