在Hive中替换列

3

我已经在Hive中创建了一张表,现在我试图使用REPLACE COLUMNS替换列名。

修改查询语句如下:

**ALTER TABLE emp1 REPLACE COLUMNS (
id INT eid int,
name STRING ename string,
sal INT esal int,
city string ecity string,
country string ecountry string);**

MismatchedTokenException(26!=301)在org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.java:617)中 org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115) org.apache.hadoop.hive.ql.parse.HiveParser.alterStatementSuffixAddCol(HiveParser.java:9898) org.apache.hadoop.hive.ql.parse.HiveParser.alterTblPartitionStatementSuffix(HiveParser.java:8524) org.apache.hadoop.hive.ql.parse.HiveParser.alterTableStatementSuffix(HiveParser.java:8139) org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7190) org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2602) org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1589) org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1065) org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:201) org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) org.apache.hadoop.hive.ql.Driver.compile(Driver.java:462) org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1276) org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1393) org.apache.hadoop.hive.ql.Driver.run(Driver.java:1205) org.apache.hadoop.hive.ql.Driver.run(Driver.java:1195) org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:220) org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:172) org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:383) org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:775) org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:693) org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:628) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) org.apache.hadoop.util.RunJar.run(RunJar.java:221) org.apache.hadoop.util.RunJar.main(RunJar.java:136) 解析错误,在添加列语句中,第二行第七个位置的输入不匹配,expecting ) near 'INT' in add column statement。 请帮我,我正在学习hive。
2个回答

2

如果你想要给表添加完全不同的列,可以使用REPLACE命令。否则,最好使用ALTER语句中的CHANGE选项来重命名列名。

将column_name替换为新列名即可。

注意:请保留html标签。

原始答案翻译成中文为"最初的回答"。


1

ALTER TABLE <TableName> REPLACE COLUMNS会删除所有现有的列,并添加新的一组列。

ALTER TABLE <TableName> REPLACE COLUMNS (EID INT, EName STRING);

REPLACE COLUMNS

对于您的场景,您可以使用ALTER TABLE <TableName> CHANGE <ColumnName>

ALTER TABLE <TableName> CHANGE ID EID INT;

此页面将为您提供大量信息 ALTER COLUMNS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接