sql - HiveSQL Alter 表重命名列并且不移动数据
问题描述
我有一张有 100 列的表。我想将此表中的一列移动到新位置。
例如,我的表(名为“sample_table”)如下所示:
var1, var2, var3, var4
w, x, y, z
本质上,我想创建一个如下所示的表:
var1, var2, var4, var3
w, x, z, y
我试过使用:
ALTER TABLE sample_table CHANGE var3
var3 STRING AFTER var4
但我得到:
var1, var2, var4, var3
w, x, y, z
所以我所做的只是重命名最后一列而不移动该列中的数据。
我知道我可以编写一个 create table 语句并使用其中的 select 语句将列按需要的顺序排列。但是,当我有 100 列并且只需要在整个表中移动一列时,这似乎非常低效。
我将如何移动整个列而不仅仅是重命名它?
非常感谢。
解决方案
您可以使用多个语句:
ALTER TABLE sample_table CHANGE var3 var3_ STRING;
ALTER TABLE sample_table CHANGE var4 var3 STRING;
ALTER TABLE sample_table CHANGE var3_ var4 STRING;
推荐阅读
- python - 气流任务信息 - 任务退出并返回代码 -9
- php - 容器注册表 TYPO3 不可用
- php - 除了 shell_exec,还有其他方法可以创建干净的 PHP 进程吗?
- flutter - 在飞镖中创建数据类型
- reactjs - 无redux(React)组件应如何在父组件触发时公开数据?
- sql - 如何将 XML 列从另一个表复制到一个表?
- javascript - 从排序数组的输出中删除逗号之前的所有内容
- vue.js - 使用 Vue 在某些路由/页面上执行事件的正确方法
- c# - 从 DbContext 加载实体时,Entity Framework Core 抛出 System.Data.SqlTypes.SqlNullValueException
- javascript - 即使设置了keepAliveTimeout,响应连接标头也具有值'close'