97 lines
3.3 KiB
SQL
97 lines
3.3 KiB
SQL
-- 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 != '';
|
||
*/
|
||
|