备份表、数据
1、復制表結構、數據
方式1:? ? ?
?create? table?新表? as? select * from 舊表;
? ? ? ?這種方法會將?舊表 中所有的內容都拷貝過來,包括表結構、數據。?
? ? ? ?缺點:新表中沒有了舊表的primary key、Extra(auto_increment)等屬性。需要自己用"alter"添加。
方式2:
?--?復制表結構,包含主鍵、索引
create?table 新表 like 舊表。?
-- 將原表數據插入新表
insert?into 新表 select * from 舊表;
數據恢復:
rename table? 舊表? to? 新表;
2、只復制表結構
方法一:
? ? create?table 新表 select * from 舊表?where 1=0;
? ? 缺點:新表中沒有了舊表的primary key、Extra(auto_increment)等屬性。
方法二:
? ? create?table 新表 like 舊表。 -- 包含主鍵、索引
方法三:
? ? ?show create table 舊表;?
? ? ?這樣會將舊表的創建命令列出。我們只需要將該命令拷貝出來,更改table的名字,就可以建立一個完全一樣的表。
方法三;
? ? set @target_tname = '舊表';
? ? set @month=date_format(now(),'%Y%m');
? ? set @sql_create_table = concat('create table if not exists ',@target_tname,'_',@month,' like ',@target_tname);
? ? prepare sql_create_table from @sql_create_table;
? ? execute sql_create_table;
原理:create table if not exists test like game_center_download_data;
3、只復制表數據:
如果兩個表結構一樣:
insert into?新表 select * from?舊表;
如果兩個表結構不一樣:
insert into?新表(column1,column2...)? select?column1,column2... from?舊表;
4、SELECT INTO OUTFILE導出
SELECT * INTO OUTFILE 'temp.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table_name WHERE createtime < 1382716800;
5、LOAD DATA 導入
LOAD DATA INFILE '/home/temp.txt' INTO TABLE table_name FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'(product_id,uuid,mac,monitor,win_version,ip,createtime) ;注: 從本地導入遠程服務器需使用LOAD DATA LOCAL INFILE
6、備份整張表數據
-- 備份原表(同時也清空了表數據,因為原表名已不存在)
RENAME TABLE?cust_belong TO cust_belong_20220920;
-- 清空新表(只恢復原表結構)
create table cust_belong like cust_belong_20220920;
恢復原數據:
?只需要將?備份表cust_belong_20220920的表名改為cust_belong即可。
總結
- 上一篇: 【郭林专刊】自信还是危机感
- 下一篇: lua 自实现pairs