主要記錄下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 ;