加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux中查看文件编码和修改文件编码

发布时间:2022-09-30 13:00:56 所属栏目:Linux 来源:
导读:  最近遇到一个需求,给我两个大文件,映射到Hive表中。

  文件中每个字段的值都有"",字段分隔符为’,’ ,通过vi查看文件内容正常,没有出现乱码。

  首先想到的方法是在hive中创建对应的表
  最近遇到一个需求,给我两个大文件,映射到Hive表中。
 
  文件中每个字段的值都有"",字段分隔符为’,’ ,通过vi查看文件内容正常,没有出现乱码。
 
  首先想到的方法是在hive中创建对应的表,然后通过put,将文件上传到hive表对应的hdfs目录下linux编码,然后查询发现乱码。
 
  下面来聊聊具体过程和解决办法:
 
  创建对应的hive表
 
  create table temp.temp_bianma_tb (
  col1              string,
  col2              string,
  col3              string,
  col4              string,
  col5              string,
  col6              string,
  col7              string,
  col8              string,
  col9              string,
  col10             string,
  col11             string,
  col12             string,
  col13             string,
  col14             string,
  col15             string,
  col16             string,
  col17             string,
  col18             string,
  col19             string,
  col20             string,
  col21             string,
  col22             string,
  col23             string
  )
  row format delimited fields terminated by ','
  ;
  通过show create table temp.temp_bianma_tb;查看此表对应的hdfs路径
 
  在通过hdfs dfs -put temp_bianma_tb.csv /user/hive/warehouse/temp.db/temp_bianma_tb/将文件导入此表对应hdfs目录下。
 
  每个字段被""包围,并且乱码
 
  但通过vi本地文件没有发现乱码异常,只是字段有""
 
  首先,将每个字段的""去掉可以通过以下命令
 
  sed -i 's/"//g' temp_bianma_tb.csv或者sed 's/"//g' temp_bianma_tb.csv > temp_bianma_tb_1.csv
 
  第一种方法利用-i参数直接在原文件中修改
 
  第二种方法利用重定向将修改后的内容插入另外一个文件,这样万一改错了也不要紧,因为没有修改原文件
 
  通过less temp_bianma_tb.csv命令查看文件发现确实乱码
 
  通过vi模式下查看文件编码
 
  :set fileencoding
 
  发现文件编码并不是utf-8,所以乱码。
 
  修改文件编码为utf-8,在vi模式下
 
  :set fileencoding=utf-8
 
  再通过vi查看文件编码
 
  :set fileencoding
 
  已经为utf-8了
 
  再执行less temp_bianma_tb.csv,文件正常显示中文
 
  将表删除重新创建,再将文件导入hive对应的hdfs目录下
 
  hdfs dfs -put temp_bianma_tb.csv /user/hive/warehouse/temp.db/temp_bianma_tb/
 
  查看表中数据,已经正常显示
 

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!