mysql有多张表如何快速复制表并把数据挪过去?

比如说现在 A 数据库有100张表、我要用到的有30张 命令:show tables like "tbl_first%"
可以查询出我这30张表开头是以tbl_first起的,那么我现在想把这30张都复制一下,并把他们的表名修改成 tbl_second 这样的格式 ,最后这个A库里面的数据应该有130条,其中30条以前不动的表 开头是tbl_first, 又多增加了30张开头是 tbl_second ,这个不光是直接复制表过去,原来表里面的信息也要过去。 开始用create table 新表名 select * from 旧表名, 更改一张执行一次, 太慢了,有没有别的方法,听说用循环,但我不太理解到底是怎么使用,回答的最好用sql语句就按上面的这个举例 写个例子
用php写吧

第1个回答  2012-02-21
你指的是在A库中重建copy以tbl_first 开始的表,然后 在A库中黏贴并改名为tbl_second?
如果是这样,我这边提供个方法:命令如下
mysql -u root -paidengshan --database information_schema --execute=" select concat('create table tbl_second',substring(table_name,10),' as select * from ',table_name,';') from tables where table_name like 'tbl_first%' and table_schema ='A库的名字' " > d:\tt.txt
其中 数据库密码要改一下,table_schema改成A库的名字,如果执行正确的话,会在 d下生成一个tt.txt文件,内容就是生成的create table as select *。。的语句,不要复制第一行,下面几行都复制了,然后黏贴到mysql里面执行就可以了追问

要是按这样执行的话,应该有问题,我先问一下,1、 --database information_schema --execute 这句是特定写的吧,我不用修改? 2、 'create table tbl_second',substring(table_name,10),' as select * from ',table_name,';') from tables where table_name like 'tbl_first%' and table_schema ='A库的名字' " > d:\tt.txt 这段里的tbl_second新表后面还有具体的名字的,好比 tbl_second_user \tbl_second_product 等

追答

问题1:不用改
问题2:substring(table_name,10),这个 函数就是把tbl_first后面的字符取到,如 tbl_first_aaa然后会对应新建tbl_second_aaa,这样行不行

追问

对 我就是想要你最后一句话的内容、 其实我一直没有搞明白你后面写的那几个表名、直接用tables概括了,能否给个解释。 旧表开头的格式都是tbl_stat_ovi_*** 新表开头格式 tbl_stat_wp_***

追答

这个tables 也是个表名 他存放表信息,show create table也是查了这个表才得到信息的 ,information_schema 库相当于一个数据字典,表信息,权限,视图、索引都在里面,你有兴趣可以看看tables的结构。

我给你的mysql命令,我已经测试过了,可行,生成对应文件,然后你把tbl_first替换成tbl_stat_ovi_,tbl_second替换成tbl_stat_wp_即可执行了,

遇到问题继续追问

本回答被网友采纳
第2个回答  2012-03-03
用create table A as select * from B 的类似语句编写就可以复制一个表的内容
第3个回答  2012-02-21
我也向学学

mysql有多张表如何快速复制表并把数据挪过去?
其中 数据库密码要改一下,table_schema改成A库的名字,如果执行正确的话,会在 d下生成一个tt.txt文件,内容就是生成的create table as select *。。的语句,不要复制第一行,下面几行都复制了,然后黏贴到mysql里面执行就可以了

高效快速实现MySQL上亿表数据复制方法分享mysql上亿表复制
二、使用mysqldump命令导出数据 mysqldump命令可用于导出整个MySQL数据库或特定表的数据。可以将导出的数据作为SQL脚本,然后在目标MySQL数据库中执行该SQL脚本文件。可以在从服务器上执行导入操作,并从主服务器上导出数据。这种方式需要导出完整的表数据,并使用快速批量插入功能(use –opt or –...

如何快速复制MySQL表结构mysql复制表结构
首先,我们可以使用SHOW CREATE TABLE命令来获取所需表结构的详细信息。它将以SQL语句的形式输出表结构信息,“Table”表示的就是原MySQL表的完整结构。例如,以下语句可以输出testtable表的结构:mysql> SHOW CREATE TABLE testtable;+———————+—...

Mysql复制表结构、表数据的方法
1、复制表结构及数据到新表 CREATE TABLE 新表SELECT FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。2...

Mysql数据迁移之复制粘贴大法
迁移方法:将源数据库data文件复制到目标机子,INNODB转换为MYISAM,完成后转换回INNODB。迁移erptest和test数据库。只需处理两个数据库的表,压缩文件并传至目标机子的相同data路径。适用于大数据量迁移,优点迁移速度快,兼容Linux与Windows。缺点包括停机时间不灵活,存在未知错误。处理20G大容量数据库时,...

mysql如何复制数据到同一张表?
假设表名为 t,执行如下语句即可满足你要求(截图为测试通过):insert into t(no,name) select concat('1',no),name from t;

如何复制MySQL数据库或表到另外一台服务器
1、打开SqlYog community Edition,分别在不同的选项卡中打开源数据库服务器与目标数据库服务器,这一点很重。在源数据库服务器选项卡中你将看到所有数据库列表。2、在需要复制迁移的数据库上右击,在弹出菜单中选择“Copy Database to Different Host\/Database”3、在弹出对话框中,我们能看到源数据库...

怎么快速复制千万级的Mysql数据库表
我google了一下大概有一下几个方法,1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 即:让WHERE条件不成立.3.复制旧表的数据到新表(假设两个表结构一样)INSERT INTO 新表 SELECT * FROM 旧表 4...

数据量瞬间飙升!如何快速、准确地迁移亿级别MySQL大表
NineData不仅满足了大表迁移的需求,还支持多种数据库类型,并提供企业专属集群模式,确保数据安全。在运营商、金融、制造、地产和电商等多个行业,NineData已经成功实施了大规模应用。如果你寻求一个高效、快速且可靠的MySQL大表迁移解决方案,不妨访问其官网ninedata.cloud\/dbmigrate,开始你的免费试用之旅...

如何利用MySQL实现两个表之间的数据复制mysql两表复制数据
在MySQL中,可以使用触发器来捕获特定事件并执行指定的操作。这些事件包括INSERT、UPDATE和DELETE等。在这种情况下,我们需要创建一个INSERT触发器来从源表向目标表复制数据。使用下面的代码创建一个INSERT触发器,在源表中插入数据时自动将数据复制到目标表。DELIMITER CREATE TRIGGER `copy_data` AFTER ...

相似回答