This commit is contained in:
张成
2025-12-15 22:03:01 +08:00
parent 6e5c35f144
commit 4443d43ec1
15 changed files with 776 additions and 485 deletions

View File

@@ -0,0 +1,96 @@
-- Active: 1763990602551@@192.144.167.231@3306@autoaiworksys
-- ============================================
-- 数据迁移脚本:将 device_status 表中的 device_id 迁移到 pla_account 表
-- 执行时间2025-01-XX
-- 说明:根据 sn_code 匹配,将 device_status.device_id 更新到 pla_account.device_id
-- ============================================
-- ============================================
-- 1. 查看 device_status 表中的数据(用于确认)
-- ============================================
SELECT
sn_code,
device_id,
deviceName,
isOnline,
isLoggedIn,
lastHeartbeatTime
FROM device_status
ORDER BY sn_code;
-- ============================================
-- 2. 查看迁移前的 pla_account 数据(用于确认)
-- ============================================
SELECT
id,
sn_code,
device_id,
name,
login_name,
platform_type
FROM pla_account
ORDER BY sn_code;
-- ============================================
-- 3. 执行数据迁移:将 device_status.device_id 更新到 pla_account.device_id
-- ============================================
-- 根据 sn_code 匹配,更新 pla_account 表的 device_id 字段
UPDATE pla_account pa
INNER JOIN device_status ds ON pa.sn_code = ds.sn_code
SET pa.device_id = ds.device_id
WHERE ds.device_id IS NOT NULL
AND ds.device_id != ''
AND (pa.device_id IS NULL OR pa.device_id = '');
-- ============================================
-- 4. 查看迁移后的结果(用于验证)
-- ============================================
SELECT
pa.id,
pa.sn_code,
pa.device_id,
pa.name,
pa.login_name,
pa.platform_type,
CASE
WHEN pa.device_id IS NOT NULL AND pa.device_id != '' THEN '已迁移'
ELSE '未迁移'
END AS migration_status
FROM pla_account pa
WHERE pa.sn_code IN (SELECT sn_code FROM device_status)
ORDER BY pa.sn_code;
-- ============================================
-- 5. 统计迁移结果
-- ============================================
SELECT
COUNT(*) AS total_device_status_records,
SUM(CASE WHEN device_id IS NOT NULL AND device_id != '' THEN 1 ELSE 0 END) AS records_with_device_id
FROM device_status;
SELECT
COUNT(*) AS total_pla_account_records,
SUM(CASE WHEN device_id IS NOT NULL AND device_id != '' THEN 1 ELSE 0 END) AS records_with_device_id_after_migration
FROM pla_account
WHERE sn_code IN (SELECT sn_code FROM device_status);
-- ============================================
-- 注意事项
-- ============================================
-- 1. 此脚本会根据 sn_code 匹配 device_status 和 pla_account 表
-- 2. 只会更新 device_id 为空或 NULL 的 pla_account 记录
-- 3. 如果 pla_account 中已有 device_id不会覆盖如需强制覆盖请修改 WHERE 条件)
-- 4. 执行前建议先查看两个表的数据,确认匹配关系
-- 5. 如果 device_status 表中没有对应的 sn_code该 pla_account 记录的 device_id 将保持为空
-- ============================================
-- 可选:如果需要强制覆盖已有的 device_id谨慎操作
-- ============================================
-- 取消下面的注释,可以强制覆盖 pla_account 中已有的 device_id
/*
UPDATE pla_account pa
INNER JOIN device_status ds ON pa.sn_code = ds.sn_code
SET pa.device_id = ds.device_id
WHERE ds.device_id IS NOT NULL AND ds.device_id != '';
*/