首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysqldump表名前缀

mysqldump表名前缀
EN

Stack Overflow用户
提问于 2009-12-17 03:23:24
回答 5查看 7.3K关注 0票数 3

我有两个mysql数据库,它们具有几乎相同的结构,并代表同一个web应用程序的数据,但其中一个代表当前版本,另一个是很久以前制作的。

如何创建包含两个转储的数据库,但对第一个数据库中的表使用old_前缀,对第二个数据库中的表使用new_前缀?

是否有任何mysqldump选项来设置前缀或其他解决方案?

EN

回答 5

Stack Overflow用户

发布于 2010-03-22 10:21:35

这个sed脚本可能更安全一些。将其保存到一个文件中,并使用sed -f过滤转储文件。

代码语言:javascript
复制
s/\(-- Table structure for table `\)\([^`]\+\)\(`\)/\1xyzzy_\2\3/
s/\(DROP TABLE IF EXISTS `\)\([^`]\+\)\(`\)/\1xyzzy_\2\3/
s/\(CREATE TABLE `\)\([^`]\+\)\(` (\)/\1xyzzy_\2\3/
s/\(-- Dumping data for table `\)\([^`]\+\)\(`\)/\1xyzzy_\2\3/
s/\(\/\*!40000 ALTER TABLE `\)\([^`]\+\)\(` DISABLE KEYS \*\/\)/\1xyzzy_\2\3/
s/\(LOCK TABLES `\)\([^`]\+\)\(` WRITE\)/\1xyzzy_\2\3/
s/\(INSERT INTO `\)\([^`]\+\)\(` VALUES (\)/\1xyzzy_\2\3/
s/\(\/\*!40000 ALTER TABLE `\)\([^`]\+\)\(` ENABLE KEYS \*\/\)/\1xyzzy_\2\3/

搜索xyzzy_并将其替换为所需的表前缀。

票数 2
EN

Stack Overflow用户

发布于 2009-12-17 03:51:19

将它们导入到不同的数据库中。假设他们被称为newdbolddb。然后,您可以将table1复制到old_table1,如下所示:

代码语言:javascript
复制
insert into newdb.old_table1
select *
from olddb.table1

如果您有大量的表,请生成一个脚本来复制它们:

代码语言:javascript
复制
select concat('insert into newdb.old_',  table_name,
    'select * from olddb.', table_name, ';')
from information_schema.tables
where table_schema = 'olddb'
票数 0
EN

Stack Overflow用户

发布于 2009-12-17 04:00:56

我以前使用mysqldumpsed做过以下事情,但我承认它一次可能只对一个表有效。

代码语言:javascript
复制
$ mysqldump -u user --password=mypass MyDB MyTable | sed s/MyTable/old_Mytable/ | mysql -u other_user -p NewDB

您可以创建一个shell脚本,其中包含一系列命令,每个表一个,或者另一个用户可以修改此脚本,以便在一次操作中有效地处理多个表。

同级

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1917021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档