前沿:
Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. 最显著的特别是, Hive的数据是Schema On Read, 对数据的写入非常的自由和松散, 而对数据的读取则作了各种限制. 而RMDBS则是Schema On Write, 对数据写入限制非常的严苛.
*). 数据导入/导出
让我们体验以下Hive中数据如何导入: 1). 创建数据库 db_hive_test; CREATE DATABASE db_hive_test; 则在HDFS的目录/user/hive/warehouse下 [<username>@<hostname> ~]# sudo -u hdfs hdfs dfs -ls /user/hive/warehouse drwxrwxrwt - root hive 0 2014-07-02 10:49 /user/hive/warehouse/db_hive_test.db![](https://images0.cnblogs.com/i/305284/201407/021218356374369.png)
2). 创建数据表 tb_user
CREATE TABLE tb_user ( user_id int, username string, age int, phone string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
3). 数据准备
在本地编辑data.txt, 内容如下所示:[@ ~]# cat data.txt 1001 lilei 17 13800001111 1002 hanmm 16 13800001112 1003 lily 16 13800001113 1004 lucy 16 13800001114
4). 导入数据入hive
LOAD DATA LOCAL INPATH '/path/to/data.txt' INTO TABLE db_hive_test.tb_user;
5). 数据验证
select * from tb_user;![](https://images0.cnblogs.com/i/305284/201407/021218467624534.png)
6). 创建数据表tb_newuser;
CREATE TABLE tb_newuser ( user_id int, username string, age int, phone string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
7). INSERT SELECT
INSERT INTO TABLE tb_newuser SELECT * FROM tb_user;
8). 数据验证
SELECT * FROM tb_newuser;![](https://images0.cnblogs.com/i/305284/201407/021218580595985.png)
数据表结构复制
CREATE TABLE tb_newuser02 LIKE tb_user;创建表时导入
CREATE TABLE tb_newuser01 SELECT * FROM tb_user;数据如何导出
导出语法: INSERT OVERWRITE/INTO LOCAL DIRECTORY '<directory>' SELECT_STATEMENTINSERT OVERWRITE LOCAL DIRECTORY '/path/to/data' SELECT * FROM tb_user;
cat /path/to/data/000000_0![](https://images0.cnblogs.com/i/305284/201407/021556135129323.png)
INSERT OVERWRITE DIRECTORY '/path/to/data' SELECT * FROM tb_user;
![](https://images0.cnblogs.com/i/305284/201407/021556234965572.png)
Local的有无, 其区别在于, 一个存放在本地, 另一个存放在hdfs上