gpt4 book ai didi

hadoop - Hive 在不知道列数据类型的情况下更改列名

转载 作者:可可西里 更新时间:2023-11-01 15:28:48 25 4
gpt4 key购买 nike

我想更改 Hive 表的列名而不更改其数据类型。

我尝试了以下查询,但它需要我不知道的数据类型。

ALTER TABLE test CHANGE a a1 INT;

我想在我的所有列之前加上前缀 SALES_,无论它们的列类型如何。

输入表

emp_id(int) emp_name(string) salary(double)

输出表

sales_emp_id(int) sales_emp_name(string) sales_salary(double)

提前致谢。

最佳答案

好吧,使用alter table 命令 更改配置单元中的列名需要它的数据类型。为此,您可以执行以下命令,

1)用你的新列名创建一个新表)

create table newTable (sales_emp_id int ,sales_emp_name string, sales_salary double) ;

2)从旧表插入新表

insert into newTable select * from oldtable;

3)现在,你可以放下你的旧 table 。

  drop table oldtable;

如果创建新表对您来说没问题,则可以使用上述代码。

好吧,如果你使用 shell 脚本,如下所示:

    while read line;do
SOURCE_TABLENAME= `echo $line| awk -F" " '{print $1}'`
TARGET_TABLENAME= `echo $line| awk -F" " '{print $2}'`
LOC=`echo "$line"| awk -F" " '{print $3}'`
PREFIX="emp_"
S=`hive -e "desc $SOURCE_TABLENAME"`

VAL=echo $S |sed 's/\(\(\w\w*\W*\)\{2\}\)/\1\n/g' | sed 's/$/,/g' | sed -e 's/^/$PREFIX/'

STATEMENT="CREATE TABLE $SOURCE_TABLENAME (`echo $VAL) as select * from $SOURCE_TABLENAME LOCATION $LOC`"
hive -e "drop table $SOURCE_TABLENAME"
done < INPUT_FILE.txt

INPUT_FILE.txt

source_table target_table 位置(所有输入用空格分隔)

关于hadoop - Hive 在不知道列数据类型的情况下更改列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38649133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com