加入收藏 | 设为首页 | 会员中心 | 我要投稿 濮阳站长网 (https://www.0393zz.cn/)- 专属主机、数据湖、操作系统、媒体智能、数据分析!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL快速复制数据表与数据库的方法

发布时间:2022-06-18 08:42:32 所属栏目:MySql教程 来源:互联网
导读:复制数据表的方法有很多最,最简单的就直接把mysql data目录下的与你数据库相同的一起复制,这样数据表与库都复制过来了. 以下范例都是把 old_table 复制到 new_table,先讲讲结论,最推荐的作法是下述两行,代码如下: CREATE TABLE new_table LIKE old_table; IN
  复制数据表的方法有很多最,最简单的就直接把mysql data目录下的与你数据库相同的一起复制,这样数据表与库都复制过来了.
 
  以下范例都是把 old_table 复制到 new_table,先讲讲结论,最推荐的作法是下述两行,代码如下:
 
  CREATE TABLE new_table LIKE old_table;
   
  INSERT new_table SELECT * FROM old_table;
  以下来讲讲几种作法和优缺点,MyISAM 的作法若比较暴力点的话,可以用下述方式做,代码如下:
 
  CREATE TABLE new_table;
  /etc/init.d/mysql stop
  cd /var/lib/mysql/database_name
  cp old_table.MYI new_table.MYI
  cp old_table.MYD new_table.MYD
  /etc/init.d/mysql start
  这样子也可以复制完成,但是这么暴力有可能会有些小问题要解决.
 
  下述作法会比较建议,参考自此篇,sql - fastest way to copy a table in mysql, 不过有下述两种作法,有些不同,先写出作法,再来解释差异.
 
  以下 old_table 若跨 DB, 都可以写成 old_db.old_table 来指定.
 
  第一种作法:一行语法复制 Table + Data,不过需要手动增加 Primay、index key 等,代码如下:
 
  1.CREATE TABLE new_table SELECT * FROM old_table; # 这个作法 Primay、index key 都不会复制,需要手动加.
 
  2.ALTER TABLE new_table ADD PRIMARY KEY (id);
 
  第二种作法:先复制 Table schema,再来 INSERT Data.(建议使用此作法,Schema 一定是一模一样的),代码如下:
 
  CREATE TABLE new_table LIKE old_table;
  INSERT new_table SELECT * FROM old_table;
  先来讲讲第一种作法,此作法 Schema 可能不同,Data 是会正确复制过来的,代码如下:
 
  CREATE TABLE new_table SELECT * FROM old_table;
 
  此行会把 Table 和 Data 都复制到 new_table, 但是 Table 使用的 Engine、语系编码 会跟 MySQL 预设的一样,而不是 Copy old_table 的. 结果可能就会是下述的状况: 要看你的系统设定而定,old_table 和 new_table 的 schema 可能会不同,但是 Data 是一致的,代码如下:
 
  ■CREATE TABLE `old_table` (
  `no` int(8) NOT NULL,
  `cname` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`no`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  ■CREATE TABLE `new_table` (
  `no` int(8) NOT NULL,  --phpfensi.com
  `cname` varchar(255) CHARACTER SET utf8 DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  第二种作法:此作法可以将 Schema 和 Data 都是一模一样的复制过来.
 
  CREATE TABLE new_table LIKE old_table;
 
  此行会完整复制 Table Schema, 先复制完 Table Schema 后,再来把资料一笔一笔 INSERT 进去.

(编辑:濮阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读