我需要在现有的MySQL表中添加一个新列,并使用从另一列中计算出的值进行填充。
有没有办法使用pt-online-schema-change
来做到这一点?
谢谢
答案 0 :(得分:2)
pt-online-schema更改运行ALTER TABLE
条语句,而不是UPDATE
条语句。如果需要填充列,则有两个选择:
添加具有pt-online-schema更改的列。然后,完成此操作后,使用UPDATE将数据填充到该列中。建议分批执行UPDATE。例如,我一次要在1000行上运行它,然后重复执行直到UPDATE报告您更改了0行。
UPDATE mytable SET mynewcolumn = <expr>
WHERE mynewcolumn IS NULL LIMIT 1000;
如果使用MySQL 5.7或更高版本,则将该列定义为GENERATED column。