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

hive表新增字段,指定新增字段位置,刪除字段

這篇具有很好參考價(jià)值的文章主要介紹了hive表新增字段,指定新增字段位置,刪除字段。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景:項(xiàng)目中,客戶使用hive內(nèi)表,由于邏輯變更,原h(huán)ive表結(jié)構(gòu)需要調(diào)整,新增字段。

一、新增字段

遇到hive表新增字段,以往建表都是建外表,直接drop后,重新創(chuàng)建。由于這次全部使用內(nèi)表創(chuàng)建的,所以使用add column功能新增字段。

alter table database.table_name add columns(col_type string comment '類型');

但是發(fā)現(xiàn),如果已經(jīng)存在記錄的情況下覆蓋寫入,新添加的字段任然為NUll。如果是新的記錄,則可以寫入。

注意:如果創(chuàng)建的是分區(qū)表,則在添加新字段時(shí),必須要帶上cascade,否則該字段無法進(jìn)入數(shù)據(jù)。

根本原因是元數(shù)據(jù)中帶分區(qū)表的元數(shù)據(jù)和hive的實(shí)際存儲(chǔ)不一致。

alter table database.table_name add columns(col_type string comment '類型') cascade;

如果已經(jīng)添加了字段,可以修改字段時(shí),在修改字段名時(shí)帶上,在修改回來。如下:

alter table database.table_name change col_type?col_type1 string comment '類型' cascade;
alter table?database.table_name change col_type1 col_type string comment '類型' cascade;

或者使用如下sql修復(fù)

msck repair table database.table_name; 

總結(jié):

對(duì)Hive表新增字段時(shí),官方給出的語法結(jié)構(gòu)如下:

ALTER TABLE table_name
  [PARTITION partition_spec]
  ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
  [CASCADE|RESTRICT]

其中CASCADE選項(xiàng)為選填的字段,但是對(duì)于分區(qū)表,一定要加上,否則其歷史分區(qū)的元數(shù)據(jù)信息(metadata)將無法正常更新,導(dǎo)致訪問歷史分區(qū)時(shí)會(huì)報(bào)莫名的錯(cuò)誤?
cascade的中文翻譯為“級(jí)聯(lián)”,也就是不僅變更新分區(qū)的表結(jié)構(gòu)(metadata),同時(shí)也變更舊分區(qū)的表結(jié)構(gòu)。??

二、調(diào)整字段順序

注意:新增字段,默認(rèn)添加在字段最后,分區(qū)字段之前。

1、hive表中指定位置增加一個(gè)字段,分兩步:

第一步:先添加字段到最后(add columns);

第二步:然后再移動(dòng)到指定位置(change)

alter table 表名 add columns (列名 string comment '注釋'); 
alter table 表名 change 要移動(dòng)的列名 移動(dòng)后的列名 string after 指定位置的列名;

經(jīng)驗(yàn)證,hive中修改字段順序并沒有將字段對(duì)應(yīng)的值移動(dòng),只是單純的修改字段名,如果是空表(沒有數(shù)據(jù)),可以使用以上兩步;如果表中已經(jīng)有數(shù)據(jù)了不推薦這么做,如果想增加字段只能往最后一個(gè)字段后添加字段。

謹(jǐn)記?。。?/p>

2、如果已經(jīng)將列名修改了,該怎么復(fù)原呢?其實(shí)很簡(jiǎn)單,將新增字段移動(dòng)原始表的最后一個(gè)字段

alter table tmpdb.change_column_test  change e e int after d;

三、刪除字段

Hive不能直接刪除列,不然底層系列化就亂了,我們可以通過replace語句來替換整張表的字段,達(dá)到同樣的效果。

實(shí)際上,使用alter語句,把保留的字段全部列出來,刪除的字段不要列出來。

例如:表tmpdb.del_col_test分區(qū)字段

 date_month STRING, 
 date_day STRING, 
 org_code STRING

結(jié)構(gòu):

  cost_ex_wl_f DECIMAL(38,18),
  cost_ex_bd_f DECIMAL(38,18),
  cost_ex_wx_f DECIMAL(38,18),
  cost_ex_km_f DECIMAL(38,18),
  cost_ex_jt_f DECIMAL(38,18),
  cost_ex_qt_f DECIMAL(38,18),
  cost_ex_jj_f DECIMAL(38,18),
  cost_ex_zj_f DECIMAL(38,18),
  cost_ex_gd_f DECIMAL(38,18),
  cost_ex_ww_f DECIMAL(38,18),
  cost_ex_cl_f DECIMAL(38,18)

假如,要?jiǎng)h除字段?cost_ex_ww_f,? cost_ex_cl_f ,刪除字段sql如下:

alter table tmpdb.del_col_test replace columns(
  cost_ex_wl_f DECIMAL(38,18),
  cost_ex_bd_f DECIMAL(38,18),
  cost_ex_wx_f DECIMAL(38,18),
  cost_ex_km_f DECIMAL(38,18),
  cost_ex_jt_f DECIMAL(38,18),
  cost_ex_qt_f DECIMAL(38,18),
  cost_ex_jj_f DECIMAL(38,18),
  cost_ex_zj_f DECIMAL(38,18),
  cost_ex_gd_f DECIMAL(38,18)
--注意:分區(qū)表,不用寫分區(qū)字段
);

語句中只寫想要保留的字段就可以。?

更多內(nèi)容,請(qǐng)查看:Hive分區(qū)表新增字段及修改表名,列名,列注釋,表注釋,增加列,調(diào)整列順序,屬性名等操作文章來源地址http://www.zghlxwxcb.cn/news/detail-487973.html

到了這里,關(guān)于hive表新增字段,指定新增字段位置,刪除字段的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ES 舊表新增字段與刪除字段

    注: ES新建庫就是所謂的新建索引。一個(gè)索引不要采用刪除后重建數(shù)據(jù)遷移的方法,數(shù)據(jù)量太大,會(huì)有服務(wù)中斷時(shí)間。 在我們進(jìn)行ES索引mapping結(jié)果修改后,已有數(shù)據(jù)是并沒有改新增字段的 只有在查詢新字段時(shí),系統(tǒng)會(huì)根據(jù)新字段類型自動(dòng)返回默認(rèn)值或者空值

    2024年02月15日
    瀏覽(19)
  • Hive 分區(qū)表新增字段 cascade

    在以前上線的分區(qū)表中新加一個(gè)字段,并且要求添加到指定的位置列。 加 cascade 操作 創(chuàng)建測(cè)試表 插入測(cè)試數(shù)據(jù) 查看現(xiàn)有數(shù)據(jù) 官網(wǎng)添加列的語法 注意: Hive 1.1.0 中有 CASCADE|RESTRICT 子句。 ALTER TABLE ADD|REPLACE COLUMNS CASCADE 命令修改表元數(shù)據(jù)的列,并將相同的更改級(jí)聯(lián)到所有分區(qū)

    2024年02月11日
    瀏覽(22)
  • elasticsearch刪除臟數(shù)據(jù)(根據(jù)指定字段刪除數(shù)據(jù))

    elasticsearch刪除臟數(shù)據(jù)(根據(jù)指定字段刪除數(shù)據(jù))

    es中出現(xiàn)幾條臟數(shù)據(jù),現(xiàn)在要把這幾條數(shù)據(jù)直接刪掉 找到要?jiǎng)h除的臟數(shù)據(jù),一般是根據(jù)id之類的字段來刪除,因?yàn)閕d具有唯一性,其實(shí)和mysql差不多 1、先查到該條記錄(注意我們這邊使用的是 ticketId字段,因?yàn)樗哂形ㄒ恍?,方便查詢?返回結(jié)果 2、接下來就把 ticketId 為 fd

    2024年02月16日
    瀏覽(25)
  • 請(qǐng)問如何用oracle觸發(fā)器實(shí)現(xiàn)不允許新增/刪除表/增加/減少/修改字段類型

    請(qǐng)問如何用oracle觸發(fā)器實(shí)現(xiàn)不允許新增/刪除表/增加/減少/修改字段類型

    請(qǐng)問如何用oracle觸發(fā)器實(shí)現(xiàn)不允許新增/刪除表/增加/減少/修改字段類型 給本帖投票 56211打賞收藏 ?分享 ?轉(zhuǎn)發(fā)到動(dòng)態(tài)舉報(bào) ?寫回復(fù) 性能測(cè)試中發(fā)現(xiàn)oracle11g數(shù)據(jù)庫每天22點(diǎn),oralce進(jìn)程CPU占用率突增 11 條回復(fù) ?切換為時(shí)間正序 請(qǐng)發(fā)表友善的回復(fù)… 發(fā)表回復(fù) microsoft_fly?2008-11-18 還

    2024年02月16日
    瀏覽(20)
  • umy-ui —— table檢索字段自動(dòng)滾到指定位置并高亮

    umy-ui —— table檢索字段自動(dòng)滾到指定位置并高亮

    需求: ?通過input輸入框,輸入要查找的數(shù)據(jù)字段,點(diǎn)擊確定可以定位到查找的那行數(shù)據(jù)、并把改行顯示高亮。 ? 實(shí)現(xiàn)思路: 安裝 umy-ui 和 babel插件:(el-table可直接忽略不安裝) main.js中引入: babel.config.js中添加: vue代碼實(shí)現(xiàn): ? ?首先: u-table中必須添加的屬性: 1. use

    2024年02月12日
    瀏覽(15)
  • mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 提供了根據(jù)id批量更新和修改的方法,這個(gè)大家都不陌生 但是當(dāng)表沒有id的時(shí)候怎么辦) 這個(gè)就不說了,就是因?yàn)椴幌胧謱慡QL 所以才有這篇博客 mybatis plus 的 executeBatch 參考 mybatis plus 的updateBatchById 方法. 調(diào)用處: 接口 重寫方法 實(shí)現(xiàn) 這種寫法其實(shí)批量的效率還是比較慢的

    2024年02月13日
    瀏覽(17)
  • Java中ArrayList如何刪除指定位置的元素

    Java中ArrayList如何刪除指定位置的元素

    目標(biāo):list中有0到39共40個(gè)元素,刪除其中索引是10、20、30的元素 首先當(dāng)我們刪除第10位元素時(shí),List會(huì)將后面的元素向前補(bǔ)位,之后再查第10位元素就會(huì)輸出第11位元素 那么刪除了一個(gè)元素以后,后面需要?jiǎng)h除的元素位置就向前提1位 當(dāng)然我們可以用一個(gè)數(shù)組或列表從小到大存

    2023年04月08日
    瀏覽(28)
  • `accept` 是一個(gè) HTTP 請(qǐng)求頭字段,用于指定客戶端可接受的內(nèi)容類型

    `accept` 是一個(gè) HTTP 請(qǐng)求頭字段,用于指定客戶端可接受的內(nèi)容類型

    accept 是一個(gè) HTTP 請(qǐng)求頭字段,用于指定客戶端可接受的內(nèi)容類型。在 JavaScript 中,可以使用 fetch API 發(fā)送帶有 Accept 頭的請(qǐng)求。例如: 續(xù)寫 當(dāng)然可以,以下是一些關(guān)于 accept 請(qǐng)求頭的更多信息: 使用不同的內(nèi)容類型 除了 application/json ,你還可以使用其他內(nèi)容類型來指定客戶

    2024年02月22日
    瀏覽(24)
  • Java語言創(chuàng)建包含以上數(shù)據(jù)類型的MySQL表,并提供批量新增數(shù)據(jù)、批量修改數(shù)據(jù)、刪除數(shù)據(jù)以及字段的DDL語句的詳細(xì)代碼示例

    以下是使用Java語言創(chuàng)建包含以上數(shù)據(jù)類型的MySQL表,并提供批量新增數(shù)據(jù)、批量修改數(shù)據(jù)、刪除數(shù)據(jù)以及字段的DDL語句的詳細(xì)代碼示例: 請(qǐng)注意,上述代碼中的DB_URL、USER和PASS需要根據(jù)實(shí)際情況進(jìn)行修改,以連接到正確的MySQL數(shù)據(jù)庫。另外,需要確保已經(jīng)導(dǎo)入了適當(dāng)?shù)腏DBC驅(qū)動(dòng)

    2024年02月15日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】單向鏈表的增刪查改以及指定pos位置的插入刪除

    【數(shù)據(jù)結(jié)構(gòu)】單向鏈表的增刪查改以及指定pos位置的插入刪除

    目錄 ?單向鏈表的概念及結(jié)構(gòu) ?尾插 頭插 尾刪 ?編輯 ?頭刪 ?查找 ?在pos位置前插 ?在pos位置后插 ?刪除pos位置 ?刪除pos的后一個(gè)位置 總結(jié) 代碼? 概念:鏈表是一種 物理存儲(chǔ)結(jié)構(gòu)上非連續(xù) 、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的 邏輯順序 是通過鏈表中的 指針鏈接 次序?qū)崿F(xiàn)的

    2024年02月05日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包