Hive学习:Hive导入字段带逗号和换行符的CSV文件

这篇具有很好参考价值的文章主要介绍了Hive学习:Hive导入字段带逗号和换行符的CSV文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、字段带逗号

100,"600,000,000.00",李世民

比如上面这行数据,字段"600,000,000,00"带多个逗号,这个可以用hive中内置的语句来解决,使用OpenCSVSerde来解析CSV格式的数据,并指定了CSV文件中使用的分隔符、引号字符和转义字符

row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
    'separatorChar' = ',',
    'quoteChar' = '\"',
    'escapeChar' = '\\'
) 
  • ‘separatorChar’ = ‘,’:指定CSV文件中使用的分隔符为逗号(,)
  • ‘quoteChar’ = ‘"’:指定CSV文件中使用的引号字符为双引号(")
  • ‘escapeChar’ = ‘\’:指定CSV文件中使用的转义字符为反斜杠(\)

这段代码表示分隔符为逗号,""中间的逗号不进行处理

二、字段带换行符

Name,Age,Address
Alice,25,"123 Main St.
Apt. 456"
Bob,30,"789 Oak St."

比如上面这段数据,本来是两条数据,但第一条数据第三个字段中间多了个换行符,在load data进hive的时候就变成了三条数据
网上找了很久,没有看到hive能直接处理这种字段中间带换行符的方式,所以只能对csv文件进行预处理
1、用shell脚本sed命令正则表达式匹配替换""中间的换行符
2、用其它语言脚本处理csv文件替换换行符文章来源地址https://www.toymoban.com/news/detail-507162.html

#!/usr/bin/python
# -*- coding:utf-8 -*-
 
#处理csv文件中换行符等特殊字符(\r\n,\n,\r,\\)
#python csv_handler.py filepath
 
import os
import sys
import csv
import codecs
import time
 
filename = sys.argv[1]
 
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),'[', filename.encode('unicode_escape').decode(), ']开始处理')
 
with open(filename, 'r') as srcFile, open(filename + '.tmp', 'w') as dstFile:
    #读取csv文件的每一行
    fileReader = csv.reader(srcFile)
    fileWriter = csv.writer(dstFile, quoting=csv.QUOTE_ALL)
 
    for d in list(fileReader):
        for ii,dd in enumerate(d):
            if dd.find('\r\n') != -1:
                dd = dd.replace('\r\n', ' ')
            if dd.find('\n') != -1:
                dd = dd.replace('\n', ' ')
            if dd.find('\r') != -1:
                dd = dd.replace('\r', ' ')
            if dd.find('\\') != -1:
                dd = dd.replace('\\', '')
            d[ii] = dd
        fileWriter.writerow(d)
 
    dstFile.close()
    srcFile.close()
 
#删除原文件,.tmp文件重命名为原文件
os.remove(filename)
os.rename(filename + '.tmp', filename)
 
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),'[', filename.encode('unicode_escape').decode(), ']处理完成')

三、字段带逗号和换行符

  • 直接把上面两种结合起来就可以了,建表使用字段带逗号那里的方式,然后预处理CSV文件,最后直接load data即可

到了这里,关于Hive学习:Hive导入字段带逗号和换行符的CSV文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git 中换行符问题处理

    实习入职第一周就中遇到了一个问题,代码中新增了 shell 脚本,但是放到服务器上执行时,发生了 shell 脚本执行错误,这个是由于不同 OS 系统换行符不同而引起的问题,导致DolphinScheduler调度任务失败,在此记录。 r (return):表示回车,就是回到本行的行首 n (newline):表示

    2024年02月03日
    浏览(41)
  • pycharm、idea、golang等JetBrains其他IDE修改行分隔符(换行符)、在Git CRLF、LF 换行符转换

    一般来说,不同的开发环境和项目对换行格式的使用偏好不同: Windows平台 - 常用rn换行格式,因为这是Windows系统默认的换行方式。 Linux/Unix平台 - 更倾向于使用n换行格式,这是Linux/Unix系统的默认换行方式。 Mac OS - 早期使用r,但现代Mac也更常用n。 统一换行格式可以减少版本控

    2024年02月13日
    浏览(76)
  • Python如何换行】:使用换行符来实现多行代码的编写和阅读

    在Python中,有时候我们需要编写较长的代码行,为了提高可读性和美观性,我们可以使用换行符来将代码分成多行。下面我将详细介绍如何在Python中实现换行,并提供相应的源代码示例。 在Python中,我们可以使用反斜杠()作为换行符。当我们在一行代码中使用反斜杠作为

    2024年02月06日
    浏览(46)
  • EXCEl——移除单元格中换行符

    方法一:使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始\\\"选项卡中找到\\\"清除”功能,点击下拉菜单中的“清除格式\\\" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一:使用函数功能 步骤如下: 1.在一个空白单元格内输入函数=SUBSTIT

    2024年02月16日
    浏览(62)
  • go字符串去除首尾所有换行符

    原创不易,如果对你有帮助,欢迎给作者点个赞哦! 一键开启舒适、快捷: 调用: 效果:

    2024年02月13日
    浏览(48)
  • 在 Python 中打印换行符——打印一个新行

    在编程中处理字符串或文本数据经常涉及打印换行符。一行的结尾由换行符表示,它还会将光标前进到下一行的开头。使用转义字符 \\\" n ”,我们可以在 Python 中打印换行符。 其他编程语言可能有不同的打印换行符的规则。 了解 Windows 中的轻松访问中心 虽然某些语言可能具

    2024年02月05日
    浏览(47)
  • Hive 导入csv文件,数据中包含逗号的问题

    今天 Hive 导入 csv 文件时,开始时建表语句如下: 然后导入 csv 文件,发现数据串列了,查看数据发现是因为数据中包含逗号的问题,因为 csv 文件列分隔符就为逗号,所以直接导入到表中会使数据串列。 查询资料发现是建表语句的问题,所以我们要需要在建表的时候指定列

    2024年02月11日
    浏览(43)
  • sql中查找、修改、替换换行符和回车符

    在数据库里查询换行符和回车符我们用 ascii码 10和13,即 chr(10)为换行符,chr(13)为回车符 查询出来后进行修改、替换 

    2024年02月15日
    浏览(51)
  • Linux 换行符替换问题(window换行\r\n转linux换行\n)

    使用vim打开文件, 进入“末行模式”,输入 :set ff=unix 回车执行,告诉编辑器改为unix换行符 输入 :w 回车,完成保存 相关参考: linux环境中替换window换行符为linux换行符

    2024年02月16日
    浏览(38)
  • chatgpt赋能python:Python中如何删除换行符?

    在Python编程中,处理文本时经常需要删除文本中的换行符。这些换行符在程序中不会有用,但会影响文本的格式并可能影响程序在文本上的操作。Python提供了很多方法来处理这个问题,我们来看看其中一些方法。 strip() 方法可用于删除字符串开头和结尾的空格和换行符。当你

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包