数据导入
Hive不支持update的操作。数据一旦导入,则不可修改。要么drop掉整个表,要么建立新的表,导入新的数据。
load:加载数据到表load data [local] inpath ‘filepath’ overwrite | into table 表名 [partition (partcol1=val1,…)];
单纯的复制/移动:将 filepath 中指定的文件复制到目标文件所指定的目录中。如果目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代。其中:
- load data:表示加载数据
- local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表。
- inpath:表示加载数据的路径
- filepath:可以引用一个文件(这种情况下,Hive 会将文件移动到表所对应的目录中)或者是一个目录(在这种情况下,Hive 会将目录中的所有文件移动至表所对应的目录中)。
- overwrite:表示覆盖(先将表中原有数据删除)表中已有数据,否则表示追加。
- into table:表示加载到哪张表。加载的目标可以是一个表或者分区。如果表包含分区,必须指定每一个分区的分区名。
- partition:表示上传到指定分区
示例: 示例:
- 上传文件到HDFS
- 加载数据到Hive
示例:
语法: INSERT OVERWRITE TABLE 表名1[PARTITION (partcol1=val1, partcol2=val2 …)] select 字段列表 FROM 表名2
注:Insert时,from子句既可以放在select子句后,也可以放在insert子句前。
示例:
示例:插入一条数据
示例:
示例:
示例:
示例:
- 在HDFS上创建目录同时上传文件
- 创建表的同时通过location指定数据文件位置
- 查询
语法: INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT … FROM …
导出的时候,会将导出到的文件夹先清空。
将查询的结果导出到本地
语法:hive -f/-e 执行语句或者脚本 > file
truncate table 表名
Truncate只能删除管理表,不能删除外部表中数据 示例: