如何将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文件的主要内容,如果未能解决你的问题,请参考以下文章

几种保存Hive查询结果的方法

Python:将大型 SQL Server 查询结果导出到 .txt 文件

将 SQL 查询结果作为 txt 文件自动导出到 Azure Blob 存储

SQL Server:将查询导出为 .txt 文件

如何在不保存 MS 访问查询的情况下将查询数据导出到 txt 文件

SHELL里执行HIVE导出文件处理成CSV文件