beeline连接hive的导出数据格式的参数及设置
beeline连接hive的导出数据格式的参数及设置
·
文章目录
beeline数据导出参数格式
- 参考语句
beeline -u jdbc:hive2://host:10000 --incremental=true --showHeader=false --outputformat=dsv --delimiterForDSV=$'\t' -e 'select * from test' > ./file.txt
- 参数说明
参数 | 说明 |
---|---|
–incremental=[true/false] | 从Hive 2.3版本往后默认是true,在它之前是默认为false。当设置为false时,为了最佳的展示列宽,完整的结果集会在展示之前被收集然后缓存起来。当设置为true时,结果集一旦被抓取到就会立即展示, 为了在展示列的填充额外消耗更少的延迟和内存。当你在客户端遭遇一个内存溢出时,推荐设置–incremental=true (因为抓取到的结果集非常大)。 |
–showHeader=[true/false] | 展示列名是否在查询结果中。默认是true。用例: beeline --showHeader=false |
–outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] | 结果展示的模式。默认是table。dsv可配合delimiterForDSV一起使用,设置分隔符 |
–delimiterForDSV= DELIMITER | 用于输出格式中划分值的界定符。默认是‘|’,如果需要输入特殊符号,如‘\n001’ ,‘\x01’等需在前面加$ ,例 --delimiterForDSV=$’\t’ |
-e | 导出sql |
- 结果展示格式(在outputformat参数中设置)
展示形式主要是将一行值的字段按照不同分割符分开,主要包括五种分割输出格式:csv, tsv, csv2, tsv2, dsv,目前csv和tsv已经被csv2和tsv2替代了。
dsv,csv2和tsv2格式的含义分别是:
csv2使用的是逗号,
tsv2使用的是tab空格,
dsv是可配置的。对于dsv格式,分隔符可以通过用参数 delimiterForDSV 进行设置,默认是 ‘|’。
举例说明
- 方式一:未设置showHeader、outputformat和delimiterForDSV参数的值,说明使用的是Beeline默认的输出格式,从outputformat说明中得知Beeline默认的输出各式为table模式,所以接下来就需要弄清楚table模式下字段分隔符是否为“|”,并且列名是否在查询结果中。–showHeader=默认是true。
语句
beeline -e "select * from table_test > ./test.txt"
展示结果如下
+------------+--------------+------------------+----------+-------------+----------------+--------------+
| area_code | acc_nbr | serv_id | prod_id | time_tag | model_type | rule_result |
+------------+--------------+------------------+----------+-------------+----------------+--------------+
| 777 | 18028137123 | 120000485555514 | 3102 | 2023010914 | 507 | 10001 |
+------------+--------------+------------------+----------+-------------+----------------+--------------+
- 方式二:去掉列名,–showHeader=false
语句
beeline --showHeader=false -e "select * from table_test > ./test.txt"
展示结果如下
| 777 | 18028137123 | 120000485555514 | 3102 | 2023010914 | 507 | 10001 |
- 方式三:如果值之间用逗号分割,可以在beeline执行语句中加入–outputformat=csv2;如果值之间用tab分割,可以在beeline执行语句中加入–outputformat=tsv2。如果方式的分割符不满足需求,想通过其他分割符来分割beeline的执行结果值,可以在beeline执行语句中加入–outputformat=dsv2和–delimiterForDSV=其他分割符号。
1)用逗号分割
语句
beeline --outputformat=csv2 -e "$tj_sql" > ./test_3.txt
展示结果如下
area_code,acc_nbr,serv_id,prod_id,time_tag,model_type,rule_result
777,18028137123,120000485555514,3102,2023010914,507,10001
2)用tab作为值之间的分割符
语句
beeline --outputformat=tsv2 -e "$tj_sql" > ./test_3.txt
展示结果如下
area_code acc_nbr serv_id prod_id time_tag model_type rule_result
777 18028137123 120000485555514 3102 2023010914 507 10001
3)其他分割符,将beeline的输出格式设置(–outputformat=dsv)为dsv,使用dsv默认的分割符,即‘|’。
语句
beeline --outputformat=dsv -e "$tj_sql" > ./test_3.txt
展示结果如下
area_code|acc_nbr|serv_id|prod_id|time_tag|model_type|rule_result
777|18028137123|120000485555514|3102|2023010914|507|10001
4)其他分割符,将beeline的输出格式设置为dsv(–outputformat=dsv),并以“\t”作为值之间得分割符(–delimiterForDSV=$‘\t’)。
语句
beeline --outputformat=dsv --delimiterForDSV=$'\t' -e "$tj_sql" > ./test_3.txt
展示结果如下
area_code acc_nbr serv_id prod_id time_tag model_type rule_result
777 18028137123 120000485555514 3102 2023010914 507 10001
5)其他分割符,将beeline的输出格式设置为dsv(–outputformat=dsv),并以“#”作为值之间得分割符(–delimiterForDSV=$‘#’)。
语句
beeline --outputformat=dsv --delimiterForDSV=$'#' -e "$tj_sql" > ./test_3.txt
展示结果如下
area_code#acc_nbr#serv_id#prod_id#time_tag#model_type#rule_result
777#18028137123#120000485555514#3102#2023010914#507#10001
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献30条内容
所有评论(0)