如何将hive查询结果导出成txt文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将hive查询结果导出成txt文件相关的知识,希望对你有一定的参考价值。
最近在使用hive时,需要将hive查询的数据导出到本地文件系统,HQL语法如下:INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1
查询结果导出到本地文件后,试图使用excel加载时遇上了麻烦:不知道hive导出文件时使用的分隔符,
使用文本编辑器打开也显示乱码。
最后在官方文档上找了半天才发现,hive使用 ^A 符号作为域的分隔符,原文如下:
Data written to the filesystem is serialized as text with columns separated by ^A
在python中可以使用line.split(\'\\x01\')来进行切分,也可以使用line.split(\'\\001\'),注意其中是单引号
在java中可以使用split("\\\\u0001")来进行切分
如果确实需要将查询结果导出到本地文件,最好使用hive的命令:
[sql] view plaincopy在CODE上查看代码片派生到我的代码片
bin/hive -e "select * from test" >> res.csv
或者是:
bin/hive -f sql.q >> res.csv
其中文件sql.q写入你想要执行的查询语句
这问题在使用hive hql streaming时也会遇到,当你使用hql strreaming 将输出直接写入到hdfs目录,然后你在该目录上创建hive 外部表时,hive的输出结果会将streaming 的key和value之间的分隔符修改为 \\001,所以,在hql streaming和输出为hive 外部表时,最好将streaming的最后输出的分隔符修改为\\001,并且hive外部表的分隔符应该设置为\\001,注意:不要使用^A和\\x01,如:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
create external table site_user_mapping_info_month(uid String,tag string,project_ids string,site_interests string) PARTITIONED BY(year String, month String) ROW FORMAT DELIMITED FIELDS TERMINATED BY \'\\001\' LOCATION \'/project/site_grouping/site_user_mapping_info_month\'; 参考技术A 在装有hive的服务器执行
hive -e "select id, name from table_name" > /tmp/out.txt
mysql命令行操作-将查询结果导出到文件
1. 设置查询自动写入文件
mysql> pager cat > /tmp/wf_task.txt PAGER set to ‘cat > /tmp/wf_task.txt‘; #之后的所有查询结果都自动写入/tmp/wf_task.txt‘,并前后覆盖。 mysql> select * from wf_task; 2 rows in set (0.00 sec) #在框口不再显示查询结果。 mysql>
2. 设置查询写入文件
mysql> select * from wf_task into outfile ‘/tmp/wf_task01.txt‘; Query OK, 2 rows affected (0.00 sec) mysql>
执行该语句时需要注意目录权限的问题。
3. 不需进入MySQL命令行即可执行写入
mysql -h 127.0.0.1 -u root -p XXXX -P 3306 -D database_name -e "select * from table" > /tmp/test.txt
执行该语句时也需要注意目录权限的问题。
以上是关于如何将hive查询结果导出成txt文件的主要内容,如果未能解决你的问题,请参考以下文章
Python:将大型 SQL Server 查询结果导出到 .txt 文件
将 SQL 查询结果作为 txt 文件自动导出到 Azure Blob 存储