===== hive导入数据的四种方式 ===== * 从本地文件系统中导入数据到Hive表; * 从HDFS上导入数据到Hive表; * 从别的表中查询出相应的数据并导入到Hive表中; * 在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。 ==== 从本地文件系统导入 ==== 要导入的文件格式 {{:pasted:20150922-160910.png}} **先决条件** * 表 T 必须存在 * 可以选择是否overwrite * 表 T 的分隔符必须和要导入文件的分隔符一样(如果文件中每一行以逗号分隔,那创建表时也要指定以逗号分隔) create table T(name string,age int,id int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; * 导入参数应该是一个目录而不是一个文件 **执行命令** * LOAD DATA LOCAL INPATH '/usr/local/hive-1.2.1/conf/hive_input/' into table T ==== 从hdfs导入 ==== **先决条件** * 表 T 必须存在 * 表 T 的分隔符必须和要导入文件的分隔符一样(如果文件中每一行以逗号分隔,那创建表时也要指定以逗号分隔) * 导入参数应该是一个目录而不是一个文件 * 可以选择是否overwrite **执行命令** * LOAD DATA INPATH 'hdfs://mycluster/hive_input/' into table T load命令将hdfs中的数据加载到表数据文件中后,会将源数据删除 ==== 从查询结果导入 ==== **先决条件** * 表 E 必须存在 * 可以选择是否overwrite **执行命令** * 先创建表E create table E like T; 将查询结果插入表E insert into E select * from T; 可以多次追加导入 insert into E select * from T where name='dd'; ==== 创建表的时候用查询结果导入 ==== **先决条件** * 可以选择是否overwrite **执行命令** * 创建表W 并从表E中导入数据 create table W as select * from E;