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        ,
相关推荐
cxr82819 小时前
基于Claude Code的 规范驱动开发(SDD)指南
人工智能·hive·驱动开发·敏捷流程·智能体
core5121 天前
Hive实战(二)
数据仓库·hive·hadoop
Agatha方艺璇2 天前
Hive基础简介
数据仓库·hive·hadoop
像豆芽一样优秀3 天前
Hive和Flink数据倾斜问题
大数据·数据仓库·hive·hadoop·flink
howard20054 天前
VMWare上搭建Hive集群
hive·hadoop
程序猿 董班长5 天前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql
XueminXu6 天前
Hive使用Tez引擎出现OOM的解决方法
hive·oom·tez·datagrip·container·outofmemory
KANGBboy9 天前
hive udf 执行一次调用多次问题
数据仓库·hive·hadoop
来杯雀巢咖啡10 天前
ubantu安装配置hive
数据仓库·hive·hadoop
chad__chang11 天前
HIVE的Window functions窗口函数【二】
数据仓库·hive·hadoop