hive 非分区表 导入csv数据

本文介绍如何使用Hive创建非分区表并从本地文件系统加载数据。通过两个示例展示了创建表的DDL语句、指定字段分隔符、加载数据的方法以及简单的查询操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非分区表

-- 示例1:
use temp;
drop table tmp_cuiwei_main_recommend;
create table IF NOT EXISTS tmp_cuiwei_main_recommend(                                    
sml_sa_id int,
sml_set_time int,
sml_cancel_time int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- local 表示数据文件在linux文件系统。如果不加local,则需要将文件上传到HDFS
load data local inpath '/data/home/gongzi/main_recommend.csv' into table temp.tmp_cuiwei_main_recommend;

select 
sml_sa_id,
-- 加上##号的目的是看字段与数据有没有对应上
"##",
sml_set_time,
"##",
sml_cancel_time 
from temp.tmp_cuiwei_main_recommend limit 30;


-- 示例2:
use temp;
drop table main_goods_yongyuan;
create table IF NOT EXISTS main_goods_yongyuan(         
a string,
b string,
c string,
d string,
e int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

-- local 表示数据文件在linux文件系统。如果不加local,则需要将文件上传到HDFS
load data local inpath '/tmp/xiaoming.txt' into table temp.main_goods_yongyuan;

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3ckgexxns8g0o

### 将CSV文件导入Hive分区表的方法 为了将CSV文件成功导入Hive的分区表中,需先创建带有适当分区字段定义的表格结构[^1]。 #### 创建带分区的Hive表 ```sql CREATE TABLE IF NOT EXISTS my_partitioned_table ( column1 STRING, column2 INT, ... ) PARTITIONED BY (partition_column STRING); ``` 接着,通过`LOAD DATA`语句可以实现本地文件系统的CSV文件向指定分区的数据加载操作。然而,在执行此命令之前,应该确保目标分区已经存在;如果不存在,则需要提前创建这些分区[^2]。 #### 添加新分区并加载数据 ```sql ALTER TABLE my_partitioned_table ADD PARTITION(partition_column='value'); LOAD DATA LOCAL INPATH '/path/to/your/file.csv' INTO TABLE my_partitioned_table PARTITION(partition_column='value'); ``` 对于动态分区的情况——即分区列的信息存储于要上传的CSV文件内时,可借助外部工具如Pandas读取CSV文件并通过PyHive库将其写入对应的Hive分区中。 #### 使用Python脚本进行批量处理 ```python import pandas as pd from pyhive import hive df = pd.read_csv('/opt/data/text1.csv') conn = hive.Connection(host="localhost", port=10000, username="user") for part_value, group in df.groupby('partition_column'): temp_file_path = f'/tmp/temp_{part_value}.csv' group.to_csv(temp_file_path, index=False) cursor = conn.cursor() sql_query = f""" LOAD DATA LOCAL INPATH '{temp_file_path}' OVERWRITE INTO TABLE my_partitioned_table PARTITION(partition_column='{part_value}') """ cursor.execute(sql_query) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值