デフォルトの varchar(255) に収まらない派生列があるので、それをミディアムテキストにしたいと考えています。それはどのように達成できますか?
create table app_meta_v as select concat_ws('|',a.platform,
category,category_level,appid) rowkey (mediumtext) from app_meta;
mediumtext はもちろん構文エラーです。正しいものはどれですか?
デフォルトの varchar(255) に収まらない派生列があるので、それをミディアムテキストにしたいと考えています。それはどのように達成できますか?
create table app_meta_v as select concat_ws('|',a.platform,
category,category_level,appid) rowkey (mediumtext) from app_meta;
mediumtext はもちろん構文エラーです。正しいものはどれですか?
テーブルの作成部分で列タイプを指定し、同じ列名を使用して値を選択するだけで、一致する列に挿入できます。
CREATE TABLE app_meta_v (rowkey MEDIUMTEXT) AS
SELECT CONCAT_WS('|',a.platform, category, category_level, appid) rowkey
FROM app_meta;
特別なことをする必要はありません。CONCAT_WS は、データ内の最長の文字列に一致するように列のサイズを自動的に変更します。
例:
create table abc(def varchar(255));
insert into abc values ('abcdefghijkl');
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
select * from abc;
この段階で、「def」が最大 255 文字であることがわかります。
create table abc2 as select concat_ws(',', def, def) def from abc;
次に、テーブル abc2 の列 def を調べると、varchar(511) が表示されます。
show columns from abc2
------------------------
Field | Type
------------------------
def | varchar(511)