MySQL:将存储JSON的longtext列迁移至JSON列的方法
实现步骤
1. 添加JSON类型的新列
首先给表新增一个JSON类型的列,示例命名为JsonData:
ALTER TABLE MyTable ADD COLUMN JsonData JSON;
2. 迁移原列的JSON数据到新列
使用CAST函数将longtext格式的JSON字符串转换为JSON类型,写入新列:
UPDATE MyTable SET JsonData = CAST(Data AS JSON);
注意:如果原
Data列存在非法JSON格式的数据,CAST操作会报错。可以先通过以下SQL筛选出非法数据并提前修正:SELECT Id, Data FROM MyTable WHERE NOT JSON_VALID(Data);
3. 验证数据迁移正确性
对比原列和新列的内容,确保数据完全一致:
SELECT Id, Data AS OriginalData, JsonData AS NewJsonData FROM MyTable WHERE Data != CAST(JsonData AS CHAR);
若查询结果为空,说明所有数据迁移无误。
4. (可选)统一列名
如果需要保持原列名Data不变,确认数据正确后执行以下操作:
-- 删除原longtext类型的Data列 ALTER TABLE MyTable DROP COLUMN Data; -- 将新列重命名为Data ALTER TABLE MyTable CHANGE COLUMN JsonData Data JSON;
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

