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

以下范例都是把 old_table 复制到 new_table.

先讲讲结论, 最推荐的作法是下述两行:

 代码如下 复制代码
■CREATE TABLE new_table LIKE old_table;
■INSERT new_table SELECT * FROM old_table;

以下来讲讲几种作法 和 优缺点.

MyISAM 的作法若比较暴力点的话, 可以用下述方式做:

 代码如下 复制代码

1.CREATE TABLE new_table;
2./etc/init.d/mysql stop
3.cd /var/lib/mysql/database_name
4.cp old_table.MYI new_table.MYI
5.cp old_table.MYD new_table.MYD
6./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 一定是一模一样的)

 代码如下 复制代码
1.CREATE TABLE new_table LIKE old_table;
2.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,
`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 进去.

时间: 2024-08-01 10:45:09

MySQL快速复制数据表与数据库的方法的相关文章

PostgreSQL数据库对比mysql快速复制空表的技巧实例

MySQL 有一个和优秀的语法 create table ... like , 可以快速复制一张表,创建其副本. PostgreSQL 也有类似的语法,而且更加灵活,不过要注意些细节. 先来看看MySQL 语法: create table ... like 原始表T1,结构如下:     +----------+------------------+------+-----+---------+----------------+    | Field | Type | Null | Key |

MySQL中复制数据表中的数据到新表中的操作教程_Mysql

MySQL是不支持SELECT - INTO语法的,使用INSERT INTO - SELECT替代相同用法,下面我们我们这里简答分一下新表存在和不存在两种情况,具体使用不同的语句.1.新表不存在复制表结构即数据到新表 create table new_table select * from old_talbe; 这种方法会将old_table中所有的内容都拷贝过来,用这种方法需要注意,new_table中没有了old_table中的primary key,Extra,auto_incremen

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

某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库.使用以下方法,可以非常简单地实现. 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb.步骤如下: 1. 首先创建新的数据库newdb #mysql -u root -ppassword mysql>CREATE DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI; 2. 使用mysqldump及mysql的

mysql中alter数据表中增加、删除字段与表名修改例子

 alter是非常强大的一个功能我们可以利用alter来修改数据表表名字体名及一些其它的操作了,下面一起来看看mysql中alter数据表中增加.删除字段与表名修改的一个例子.     修改删除mysql数据库中的数据内容: [root@hk ~]# /usr/local/mysql/bin/mysql -uroot -p'admin' #进入mysql mysql> create database gbk default character set gbk collate gbk_chines

MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔(推荐)

DATE_ADD() 函数向日期添加指定的时间间隔. 当前表所有数据都往后增加一天时间: UPDATE ACT_BlockNum SET CreateTime = DATE_ADD(CreateTime, INTERVAL 1 DAY); 当前表所有数据都往前减少一天时间: UPDATE ACT_BlockNum SET CreateTime = DATE_ADD(CreateTime, INTERVAL -1 DAY); 为了防止数据库查询报空异常,当查询结果返回为整型的时候可以和0进行比较如

asp.net中EXCEL数据导入到数据库的方法_实用技巧

本文实例讲述了asp.net中EXCEL数据导入到数据库的方法.分享给大家供大家参考.具体分析如下: excel是办公中非常常用的一个办公表格了,但我们在开发中通常会需要直接把excel数据快速导入到数据库中了,这里整理了一个asp.net中EXCEL数据导入到数据库的例子供各位参考学习. 注意:EXCEL中的第一行不能导入.下面是源码:IntoExcel.aspx: 复制代码 代码如下: <%@ Page  AutoEventWireup="true" CodeFile=&qu

修复DBF数据表文件的简单方法

数据   修复DBF数据表文件的简单方法 如果你的软件提示"不是DATABASE 数据库"等意思说明你的数据库已经受损,需要进行修理.本人在实践中,摸索出几种可行的办法,以供大家参考,如有不正确之处或者其他更好的方法,希望不吝赐教:       方法1.如果你有DELPHI的Database DeskTop,修复DBF文件是一件非常容易的事,只要打开损坏的数据库(用Database DeskTop是可以打开损坏的DBF数据表的),修正损坏的记录,一般是最后几条记录,不能修正的损坏记录也

MySQL数据表损坏的修复方法详解

1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时被杀掉. 4. 使用myisamchk 的同时,mysqld 也在操作表. 5. 磁盘故障. 6. 服务器死机. 7. mysql 本身的bug . 2.表损坏的症状 一个损坏的表的典型症状如下: 1 .当在从表中选择数据之时,你得到如下错误: Incorrect key file for table: '-'.

MYSQL教程:检查数据表和修复数据表

数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏.所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试. 本章结合MySQL服务器的运行机制和所提供的工具,介绍如何进行数据库的备份.维护和修复. 以下是几点防范的措施: 制定一份数据库备份/恢复计划,并对计划进行仔细测试. 启动数据库服务器的二进制变更日志,该功能的系统开销很小(约为1%),我们没有理由不这样做. 定期检查数据表,防范于未燃. 定期对备份文件进行备份,以防备份文件失效. 把