gpt4 book ai didi

javascript - Knex.js 有条件地将数据从一列迁移到其他列

转载 作者:行者123 更新时间:2023-11-29 23:41:44 24 4
gpt4 key购买 nike

我正尝试在脏的 MySQL 数据库中使用 knex.js 进行迁移。因此,有一列包含三种不同类型数据的 JSON。我已经进行了迁移,其中我为这些不同类型的数据创建了三个不同的列。

我现在想做的是有条件地将数据从带有 JSON 的列移动到三个不同的列,这样:
如果类型 == A:
移动到 new_col_A
否则,如果类型 == B:
移动到 new_col_B
别的:
移动到 new_col_C
因此,最终这个带有 JSON 的列应该是空的,三个新列应该填充这个 JSON 列中的数据。

最佳答案

像这样的东西应该可以工作(https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#operator_json-inline-path):

update `MyTable` set `new_col_A` = `old_col` where `old_col`->>'$.type' = 'A';
update `MyTable` set `new_col_B` = `old_col` where `old_col`->>'$.type' = 'B';
update `MyTable` set `new_col_C` = `old_col` where `old_col`->>'$.type' not in ('A', 'B');

-- now check that data was migrated correctly to new columns before setting old column to null
update `MyTable` set `old_col` = NULL;

我没有尝试运行代码,所以它可能有一些错误,但基本原理应该有效(我一直只在 postgresql 中使用 json)。

对于 knex,您需要使用原始查询来使其正常工作,因为它没有对 json 操作的任何特殊支持。

关于javascript - Knex.js 有条件地将数据从一列迁移到其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45077842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com