数仓数据含有特殊字符,如何更方便的导出成excel文件

一般情况,如果遇到数据中含有特殊字符, "\n", "\r", "\t",或者其他的特殊分隔符在数据导出时造成错位,都用sql替换,但是需求是导出的数据要保持原有内容格式,就不能替换剔除这些特殊字符,这种情况下使用json方式

1,在hive 数仓建一个临时的json格式的表

CREATE EXTERNAL TABLE `test_get_ddd`(   
 visit_id string,
 hospital string,
 visit_type string,
 visit_time string,
 discharge_time string,
 name string,
 id_code string,
 phone string,
 address string,
 diagnosis_text string,
 yxsyjg string,
 jws string,
 jzs string
  )                                       
ROW FORMAT SERDE                                   
  'org.apache.hive.hcatalog.data.JsonSerDe'        
STORED AS INPUTFORMAT                              
  'org.apache.hadoop.mapred.TextInputFormat'       
OUTPUTFORMAT                                       
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

2,使用insert ....select 方式将查询好的数据写入这个表

insert overwrite  table test_get_ddd 
select  hospital,discharge_time,name,id_code,phone,address,diagnosis_text,jzs,jws
from t1

3,使用hdfs命令get下来生成的json格式文件,数据一行一个json串

get下来的文件后缀可以重命名成以json结尾

hdfs dfs -get xxxxxx/hive/test_get_ddd_3/*

4,使用python脚本转成excel格式

import pandas as pd

import sys
reload(sys)
sys.setdefaultencoding('utf8')

basePath = os.path.dirname(os.path.abspath(__file__))

df = pd.read_json(basePath + '/hive_fin.json', lines=True, encoding='utf-8')
df.to_csv('test_json.csv')

  用excel打开,如果遇到乱码就中数据加载项导入

第一种方式导入

数仓数据含有特殊字符,如何更方便的导出成excel文件_第1张图片

 数仓数据含有特殊字符,如何更方便的导出成excel文件_第2张图片

 第二种方式导入

数仓数据含有特殊字符,如何更方便的导出成excel文件_第3张图片

 

你可能感兴趣的:(1024程序员节)