=Start=
缘由:
备份是一个好习惯。线上操作,备份为先。
参考解答:
MySQL表结构的复制
# 完整的将 表tbl_name1 中的字段结构和索引复制到 表tbl_name2 中 create table tbl_name2 like tbl_name1; # 只复制 表tbl_name1 中的字段结构到 表tbl_name2 中(不复制索引,好处在于比较灵活,可以指定要复制哪些字段) create table tbl_name2 as select col_a, col_b from tbl_name1 limit 0; # 先查看 表tbl_name1 中创建语句,然后(改一下表名和AUTO_INCREMENT)再执行一遍以创建 表tbl_name2 show create table tbl_name1;
MySQL表数据的复制
先建表: SHOW CREATE TABLE `table1`; CREATE TABLE `table2`(...); # 注意修改 表名 & AUTO_INCREMENT 或 CREATE TABLE `table2` LIKE `table1`; 然后复制数据: INSERT INTO `table2`(fields you want) SELECT fields you want FROM `table1`; INSERT INTO `table2` SELECT * FROM `table1`; #将`table1`中的数据复制到`table2`中 实例: CREATE TABLE `product_backup` LIKE `product_id`; LOCK TABLES product_backup WRITE; LOCK TABLES product_id READ; INSERT INTO product_backup SELECT * FROM product ORDER BY product_id; UNLOCK TABLES; 复制表结构(不包括索引)+复制数据: CREATE TABLE `table2` [AS] SELECT * FROM `table1`; ==== 建议先导出,再导入: SELECT * FROM `table1` INTO OUTFILE '/tmp/tbl1.txt'; LOAD DATA INFILE '/tmp/tbl1.txt' INTO TABLE `table2`; 不建议直接插入: INSERT INTO `table2` SELECT * from `table1`;
参考链接:
- http://dev.mysql.com/doc/refman/5.7/en/create-table-select.html
- http://leeon.me/a/mysql-create-table-like-vs-create-table-as-select
- http://blog.51yip.com/mysql/1311.html
- http://stackoverflow.com/questions/6595252/mysql-creating-a-new-table-with-information-from-a-query
- https://www.percona.com/blog/2006/07/12/insert-into-select-performance-with-innodb-tables/ #两种复制方法的比较
=END=
《 “MySQL表结构/内容的复制” 》 有 4 条评论
重置 MySQL 自增列 AUTO_INCREMENT 初始值
方法一:
delete from tb1;
ALTER TABLE tb1 AUTO_INCREMENT = 1;
(好处,可以设置 AUTO_INCREMENT 为任意值开始。缺点:如果表列和数据很多,速度会很慢)
方法二:
truncate tb1;
(好处,简单,AUTO_INCREMENT 值重新开始计数)
MySQL中如何根据一个表的搜索(select)结果来对另一个表进行插入(insert)操作?
https://blog.csdn.net/bao19901210/article/details/51992584
`
SELECT INTO FROM 语句
语句形式为:
select vale1, value2
into Table2 from Table1;
要求:目标表 Table2 不存在,因为在插入时会自动创建表 Table2 ,并将 Table1 中指定字段数据复制到 Table2 中。
INSERT INTO SELECT 语句
语句形式为:
insert into Table2 (field1,field2,…)
select value1,value2,… from Table1;
要求:目标表 Table2 必须存在,由于目标表 Table2 已经存在,所以我们除了插入源表 Table1 的字段外,还可以插入常量。
`
SQL INSERT INTO SELECT 语句
http://www.runoob.com/sql/sql-insert-into-select.html
https://stackoverflow.com/questions/25969/insert-into-values-select-from
`
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
`
https://stackoverflow.com/questions/2958235/mysql-query-how-to-insert-with-union
MySQL数据库表结构同步之SchemaSync
http://seanlook.com/2017/11/02/mysql_schemasync/
MySQL数据库表结构同步之mysqldiff
http://seanlook.com/2017/08/05/mysql_mysqldiff/