数据库杂七杂八
迁移和备份表
// 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. 创建备份表
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); |
注意事项
-
事务处理:对于生产环境,建议在事务中执行这些操作,以便在出现问题时可以回滚:
START TRANSACTION;
-- 执行插入和删除操作
COMMIT;
-- 或者如果出现问题
ROLLBACK;
-
性能考虑:对于大型表,这些操作可能会很耗时并锁定表。考虑在低峰期执行,或者分批处理。
-
备份验证:在删除原表数据前,请验证备份表中数据的完整性和正确性。
-
索引和约束:如果原表有索引、外键约束等,备份表可能需要重建这些结构。
-
存储空间:确保备份表有足够的存储空间。
您需要根据具体的数据库系统和业务需求调整上述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)!