-- 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 != ''; */