主要记录下apache phoenix 修改表字段的一种变通方式,仅供参考
CREATE TABLE IF NOT EXISTS t_appversion (
f_region_id VARCHAR,
f_province_id VARCHAR,
f_province_name VARCHAR,
f_terminal INTEGER ,
f_phone_model VARCHAR,
f_app_version VARCHAR,
f_hard_version VARCHAR,
f_ca_id VARCHAR
constraint pk primary key(f_ca_id)
);
例如 t_appversion 表中f_terminal字段要修改varchar类型,我们可以通过备份t_appversion 数据,然后创建一个结构类似的表
CREATE TABLE IF NOT EXISTS test_appversion (
f_region_id VARCHAR,
f_province_id VARCHAR,
f_province_name VARCHAR,
f_terminal VARCHAR,
f_phone_model VARCHAR,
f_app_version VARCHAR,
f_hard_version VARCHAR,
f_ca_id VARCHAR
constraint pk primary key(f_ca_id)
);
然后进行数据迁移主要使用了UPSERT SELECT 语法,数据迁移到临时表中
历史数据迁移到临时表中
UPSERT into test_appversion select * from t_appversion
删除目标表 t_appversion,
drop table t_appversion;
删除目标表 t_appversion,再从创建 t_appversion,结构和临时表(test_appversion)相同.
再次数据迁移,将临时表中的数据迁移到目标表中t_appversion,
历史数据迁移到临时表中
UPSERT into t_appversion select * from test_appversion
删除临时 test_appversion ,
drop table test_appversion ;