Hive输出文件的间隔符

1.insert 语法格式为:
基本的插入语法:
INSERT OVERWRITE TABLE tablename [PARTITON(partcol1=val1,partclo2=val2)]select_statement FROM from_statement
insert overwrite table test_insert select * from test_table;

对多个表进行插入操作:
FROM fromstatte
INSERT OVERWRITE TABLE tablename1 [PARTITON(partcol1=val1,partclo2=val2)]select_statement1
INSERT OVERWRITE TABLE tablename2 [PARTITON(partcol1=val1,partclo2=val2)]select_statement2

from test_table                     
insert overwrite table test_insert1 
select key
insert overwrite table test_insert2
select value;

insert的时候,from子句即可以放在select 子句后面,也可以放在 insert子句前面。
hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。
2.通过查询将数据保存到filesystem
INSERT OVERWRITE [LOCAL] DIRECTORY directory SELECT.... FROM .....
                                                                                                                                                                                                          导入数据到本地目录:
insert overwrite local directory '/home/zhangxin/hive' select * from test_insert1;
产生的文件会覆盖指定目录中的其他文件,即将目录中已经存在的文件进行删除。

导出数据到HDFS中:
insert overwrite directory '/user/zhangxin/export_test' select value from test_table;

同一个查询结果可以同时插入到多个表或者多个目录中:
from test_insert1
insert overwrite local directory '/home/zhangxin/hive' select * 
insert overwrite directory '/user/zhangxin/export_test' select value;
 
在hive中将结果输出到本地目录下: 
hive> INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/result' > SELECT * FROM table_name 
查看结果的时候,发现各个字段都连接在一起,如下
[hadoop@hadoop-24 result]$ more 000000_0 1331903227197_846612012-04-09 1331903230484_756522012-04-09 1331903233859_134242012-04-09 1331903251469_712512012-04-09 1331903253640_325962012-04-09 

后来人工加上了分割符“空格”,从视觉上感觉好多了,但是,在实际运算的时候,发现输出文件中实际上已经有分割符了,只是视觉上看不出来罢了。

但是,分隔符和各自的文件/系统的编码设置有关系。在我们的系统上,间隔符为'x01’,直接用split(‘x01’)就可以了。

No matter what the table format, INSERT OVERWRITE LOCAL DIRECTORY will always use ctrl-A delimiters ('01' ) 
所以 你可以根据‘01’来分隔 目前似乎还不支持类似于: INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_81' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM testTable ; 
原文地址:https://www.cnblogs.com/java20130722/p/3206895.html