-->
顯示具有 sql 標籤的文章。 顯示所有文章
顯示具有 sql 標籤的文章。 顯示所有文章

2021/01/18

快速複製 table 資料 - insert into select

遇到一個奇怪的需求,要備份特定資料表的資料。因為很懶所以直接從 SQL 動手。

用 show create table 複製原有資料表的 schema:

> show create table users \G                                                                                         
***************************[ 1. row ]***************************
Table        | users
Create Table | CREATE TABLE `users` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB


再來用 「insert into select」 的方法來從原有的資料表拉資料:

insert into backup (name, email)
select name, email from users where id in (1, 3, 5)


這個作法好像會比一次一筆資料拉還要快一些,不過要注意的是 id (或是 auto_increment) 等欄位要忽略,讓 DB 自己處理,不然之後新增資料可能會出現 duplicated keys 之類的問題。