自学内容网 自学内容网

数据库杂七杂八

迁移和备份表

// t_order_ele_charge 充电度数和应付价格都是0的数据。
SELECT * FROM t_order_ele_charge c WHERE c.power = 0  AND c.sevice_amt=0 ;

-- 1. 首先创建备份表(结构与原表相同)-- 这会创建一个结构相同但没有数据的表 
CREATE TABLE t_order_ele_charge_backup_20250606 LIKE t_order_ele_charge;
-- 2. 然后将满足条件的数据插入到备份表
INSERT INTO t_order_ele_charge_backup_20250606 SELECT * FROM t_order_ele_charge c WHERE c.power = 0  AND c.sevice_amt=0; 

-- 3. 可选:从原表中删除已备份的数据(如果需要)
DELETE FROM t_order_ele_charge  c WHERE c.power = 0  AND c.sevice_amt=0;

将数据库中的老数据迁移到备份表是一个常见的数据库维护任务。以下是一个通用的步骤指南,适用于大多数关系型数据库系统:

步骤概述

  1. 创建备份表:首先需要创建一个与原表结构相同的备份表。
  2. 迁移数据:将需要备份的数据从原表插入到备份表。
  3. 删除原表中的数据:确认备份成功后,从原表中删除已备份的数据。

具体实现

1. 创建备份表

CREATE TABLE t_order_ele_charge_backup_20250606 LIKE t_order_ele_charge;

 

这个语句会创建一个与t_order_ele_charge结构相同但无数据的备份表。

2. 迁移数据到备份表

假设您想备份30天前的数据:

INSERT INTO t_er_proxy_backup
SELECT * FROM t_er_proxy
WHERE create_date < DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);

(请将create_date替换为您表中实际表示创建时间的列名,并根据需要调整时间间隔)

3. 从原表中删除已备份的数据

DELETE FROM t_er_proxy
WHERE create_date < DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);

注意事项

  1. 事务处理:对于生产环境,建议在事务中执行这些操作,以便在出现问题时可以回滚:

    START TRANSACTION;
    -- 执行插入和删除操作
    COMMIT;
    -- 或者如果出现问题
    ROLLBACK;
  2. 性能考虑:对于大型表,这些操作可能会很耗时并锁定表。考虑在低峰期执行,或者分批处理。

  3. 备份验证:在删除原表数据前,请验证备份表中数据的完整性和正确性。

  4. 索引和约束:如果原表有索引、外键约束等,备份表可能需要重建这些结构。

  5. 存储空间:确保备份表有足够的存储空间。

您需要根据具体的数据库系统和业务需求调整上述SQL语句。如果您使用的是特定的数据库系统(如Oracle、SQL Server等),可能需要使用特定的语法或工具来完成这些操作。

查表内数据多少条

SELECT COUNT(*) AS row_count FROM t_er_proxy;

查表内数据大小

SELECT 
    table_name AS 't_er_proxy',
    round(data_length/1024/1024, 2) AS '数据大小(MB)',
    round(index_length/1024/1024, 2) AS '索引大小(MB)',
    round((data_length+index_length)/1024/1024, 2) AS '总大小(MB)'
FROM information_schema.TABLES 
WHERE table_schema = 'er' AND table_name = 't_er_proxy';


原文地址:https://blog.csdn.net/qq_20427967/article/details/148452197

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!