kt-template-online-api/sql/migrate-dict-to-admin-dict.sql

42 lines
1.1 KiB
SQL

-- 旧 dict 表到新 admin_dict 表的数据迁移脚本。
-- 使用方式:目标库里仍存在旧 `dict` 表时,在执行 `vben-admin-init.sql` 创建新表后执行本脚本。
SET NAMES utf8mb4;
SET @dict_snowflake_base := 2041700000000400000;
SET @dict_snowflake_row := 0;
INSERT INTO `admin_dict` (
`id`,
`dict_code`,
`label`,
`value`,
`children_code`,
`sort`,
`status`,
`is_deleted`,
`create_time`,
`update_time`
)
SELECT
CASE
WHEN CAST(`id` AS CHAR) REGEXP '^[0-9]+$' THEN CAST(`id` AS UNSIGNED)
ELSE @dict_snowflake_base + (@dict_snowflake_row := @dict_snowflake_row + 1)
END,
`dict_key`,
`label`,
`value`,
`children_key`,
COALESCE(`sort`, 0),
IF(COALESCE(`is_deleted`, 0) = 0, 1, 0),
COALESCE(`is_deleted`, 0),
COALESCE(`create_time`, CURRENT_TIMESTAMP(6)),
COALESCE(`update_time`, CURRENT_TIMESTAMP(6))
FROM `dict`
ON DUPLICATE KEY UPDATE
`label` = VALUES(`label`),
`children_code` = VALUES(`children_code`),
`sort` = VALUES(`sort`),
`status` = VALUES(`status`),
`is_deleted` = VALUES(`is_deleted`),
`update_time` = VALUES(`update_time`);