国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hive學(xué)習(xí):Hive導(dǎo)入字段帶逗號和換行符的CSV文件

這篇具有很好參考價值的文章主要介紹了Hive學(xué)習(xí):Hive導(dǎo)入字段帶逗號和換行符的CSV文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、字段帶逗號

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

比如上面這行數(shù)據(jù),字段"600,000,000,00"帶多個逗號,這個可以用hive中內(nèi)置的語句來解決,使用OpenCSVSerde來解析CSV格式的數(shù)據(jù),并指定了CSV文件中使用的分隔符、引號字符和轉(zhuǎn)義字符

row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
    'separatorChar' = ',',
    'quoteChar' = '\"',
    'escapeChar' = '\\'
) 
  • ‘separatorChar’ = ‘,’:指定CSV文件中使用的分隔符為逗號(,)
  • ‘quoteChar’ = ‘"’:指定CSV文件中使用的引號字符為雙引號(")
  • ‘escapeChar’ = ‘\’:指定CSV文件中使用的轉(zhuǎn)義字符為反斜杠(\)

這段代碼表示分隔符為逗號,""中間的逗號不進(jìn)行處理

二、字段帶換行符

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

比如上面這段數(shù)據(jù),本來是兩條數(shù)據(jù),但第一條數(shù)據(jù)第三個字段中間多了個換行符,在load data進(jìn)hive的時候就變成了三條數(shù)據(jù)
網(wǎng)上找了很久,沒有看到hive能直接處理這種字段中間帶換行符的方式,所以只能對csv文件進(jìn)行預(yù)處理
1、用shell腳本sed命令正則表達(dá)式匹配替換""中間的換行符
2、用其它語言腳本處理csv文件替換換行符文章來源地址http://www.zghlxwxcb.cn/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(), ']處理完成')

三、字段帶逗號和換行符

  • 直接把上面兩種結(jié)合起來就可以了,建表使用字段帶逗號那里的方式,然后預(yù)處理CSV文件,最后直接load data即可

到了這里,關(guān)于Hive學(xué)習(xí):Hive導(dǎo)入字段帶逗號和換行符的CSV文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Git 中換行符問題處理

    實習(xí)入職第一周就中遇到了一個問題,代碼中新增了 shell 腳本,但是放到服務(wù)器上執(zhí)行時,發(fā)生了 shell 腳本執(zhí)行錯誤,這個是由于不同 OS 系統(tǒng)換行符不同而引起的問題,導(dǎo)致DolphinScheduler調(diào)度任務(wù)失敗,在此記錄。 r (return):表示回車,就是回到本行的行首 n (newline):表示

    2024年02月03日
    瀏覽(23)
  • pycharm、idea、golang等JetBrains其他IDE修改行分隔符(換行符)、在Git CRLF、LF 換行符轉(zhuǎn)換

    pycharm、idea、golang等JetBrains其他IDE修改行分隔符(換行符)、在Git CRLF、LF 換行符轉(zhuǎn)換

    一般來說,不同的開發(fā)環(huán)境和項目對換行格式的使用偏好不同: Windows平臺 - 常用rn換行格式,因為這是Windows系統(tǒng)默認(rèn)的換行方式。 Linux/Unix平臺 - 更傾向于使用n換行格式,這是Linux/Unix系統(tǒng)的默認(rèn)換行方式。 Mac OS - 早期使用r,但現(xiàn)代Mac也更常用n。 統(tǒng)一換行格式可以減少版本控

    2024年02月13日
    瀏覽(22)
  • Python如何換行】:使用換行符來實現(xiàn)多行代碼的編寫和閱讀

    在Python中,有時候我們需要編寫較長的代碼行,為了提高可讀性和美觀性,我們可以使用換行符來將代碼分成多行。下面我將詳細(xì)介紹如何在Python中實現(xiàn)換行,并提供相應(yīng)的源代碼示例。 在Python中,我們可以使用反斜杠()作為換行符。當(dāng)我們在一行代碼中使用反斜杠作為

    2024年02月06日
    瀏覽(23)
  • EXCEl——移除單元格中換行符

    EXCEl——移除單元格中換行符

    方法一:使用清除格式功能 步驟如下: 1.選中需要取消換行的單元格 2.在“開始\\\"選項卡中找到\\\"清除”功能,點擊下拉菜單中的“清除格式\\\" 3.這時單元格的換行就被取消了。 清除前效果圖 清除后效果圖 方法一:使用函數(shù)功能 步驟如下: 1.在一個空白單元格內(nèi)輸入函數(shù)=SUBSTIT

    2024年02月16日
    瀏覽(28)
  • go字符串去除首尾所有換行符

    原創(chuàng)不易,如果對你有幫助,歡迎給作者點個贊哦! 一鍵開啟舒適、快捷: 調(diào)用: 效果:

    2024年02月13日
    瀏覽(23)
  • 在 Python 中打印換行符——打印一個新行

    在 Python 中打印換行符——打印一個新行

    在編程中處理字符串或文本數(shù)據(jù)經(jīng)常涉及打印換行符。一行的結(jié)尾由換行符表示,它還會將光標(biāo)前進(jìn)到下一行的開頭。使用轉(zhuǎn)義字符 \\\" n ”,我們可以在 Python 中打印換行符。 其他編程語言可能有不同的打印換行符的規(guī)則。 了解 Windows 中的輕松訪問中心 雖然某些語言可能具

    2024年02月05日
    瀏覽(18)
  • Hive 導(dǎo)入csv文件,數(shù)據(jù)中包含逗號的問題

    今天 Hive 導(dǎo)入 csv 文件時,開始時建表語句如下: 然后導(dǎo)入 csv 文件,發(fā)現(xiàn)數(shù)據(jù)串列了,查看數(shù)據(jù)發(fā)現(xiàn)是因為數(shù)據(jù)中包含逗號的問題,因為 csv 文件列分隔符就為逗號,所以直接導(dǎo)入到表中會使數(shù)據(jù)串列。 查詢資料發(fā)現(xiàn)是建表語句的問題,所以我們要需要在建表的時候指定列

    2024年02月11日
    瀏覽(23)
  • sql中查找、修改、替換換行符和回車符

    在數(shù)據(jù)庫里查詢換行符和回車符我們用?ascii碼 10和13,即 chr(10)為換行符,chr(13)為回車符 查詢出來后進(jìn)行修改、替換?

    2024年02月15日
    瀏覽(22)
  • Linux 換行符替換問題(window換行\r\n轉(zhuǎn)linux換行\n)

    使用vim打開文件, 進(jìn)入“末行模式”,輸入 :set ff=unix 回車執(zhí)行,告訴編輯器改為unix換行符 輸入 :w 回車,完成保存 相關(guān)參考: linux環(huán)境中替換window換行符為linux換行符

    2024年02月16日
    瀏覽(25)
  • chatgpt賦能python:Python中如何刪除換行符?

    在Python編程中,處理文本時經(jīng)常需要刪除文本中的換行符。這些換行符在程序中不會有用,但會影響文本的格式并可能影響程序在文本上的操作。Python提供了很多方法來處理這個問題,我們來看看其中一些方法。 strip() 方法可用于刪除字符串開頭和結(jié)尾的空格和換行符。當(dāng)你

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包