重命名DB并将DB结构复制到新的DB-MySQL&;PHP还是Ruby

重命名DB并将DB结构复制到新的DB-MySQL&;PHP还是Ruby,php,mysql,mysqldump,Php,Mysql,Mysqldump,参考: 这是我的问题。。。我有一个网站,我使用PPC来驱动流量。我跟踪访问者的关键字、PPC源代码、广告版本等。目前我将这些数据存储在名为visions的MySQL数据库(InnoDB)中。然而,当PPC活动全速运行时,它会生成大量数据。我的站点经常崩溃,因为数据库已满并停止响应。(因为我忘了手动复制并清空…) 现在我想创建一个PHP或Ruby脚本,每周/每月运行一次,将收集的数据放入归档数据库,并清空用于数据收集的数据库。我认为最快的方法是将现有DBvisions重命名为带有日期戳的名称,如2

参考:

这是我的问题。。。我有一个网站,我使用PPC来驱动流量。我跟踪访问者的关键字、PPC源代码、广告版本等。目前我将这些数据存储在名为
visions
的MySQL数据库(InnoDB)中。然而,当PPC活动全速运行时,它会生成大量数据。我的站点经常崩溃,因为数据库已满并停止响应。(因为我忘了手动复制并清空…)

现在我想创建一个PHP或Ruby脚本,每周/每月运行一次,将收集的数据放入归档数据库,并清空用于数据收集的数据库。我认为最快的方法是将现有DB
visions
重命名为带有日期戳的名称,如2013年1月的
visions\u 010113\u 020113
。然后复制创建一个新的
访问
,仅使用结构。主键是由PHP的md5函数生成的32字符散列,因此自动递增导致的重复键不是问题

(我选择了一个DB来存储数据,因为我熟悉DBs,并且我希望能够解析用于定制报告的数据。我愿意接受不同体系结构的建议,但我不想现在花3周时间编写新类等新体系结构的代码。)

我运行了一个谷歌搜索,将数据库的结构复制到一个新的数据库(第一个结果是我上面提到的结果,第一个页面的其余大部分都非常相似)。但是,所有解决方案都通过CLI使用mysqldump。我想通过PHP或Ruby做任何事情。我可以使用PHP中的SSH类来执行CLI,但这似乎是一种攻击

我希望有一个简单的SQL语句可以用来进行重命名和复制。我的首选解决方案是完全使用PHP。我将PHP5.3.10-1ubuntu3.6与Suhosin补丁、mysql 5.5.29-0ubuntu0.12.04.2和Ubuntu 12.04服务器一起使用。我还使用PHP的PDO对象与MySQL进行接口


谢谢

所以这需要您有一个需要复制的表的列表,但我喜欢

CREATE TABLE cur_db.tbl_name LIKE old_db.tbl_name

因此,您的脚本可以重命名数据库,创建新的数据库,然后在表名上循环运行

我的意思是,我也不知道如何重命名数据库。作为测试,我尝试了按照phpmyadmin创建数据库访问\u struct/DROP DATABASE visions\u template,但没有成功。就
createtable
语句而言,我可以通过
showtables
获得一个列表,并且只有4个表,所以这对这个数据库来说不应该是一个问题。直到有上千张桌子,我才意识到这会成为一个问题,但也许我错了。如果只有一条SQL语句就可以了,但这肯定比没有好。Thanks@gabe-我忘了MySQL没有提供一个好的重命名DB命令,但这实际上可能会使这更容易。所以你需要复制你的数据库。1) 创建新的db 2)使用
create x LIKE y
创建所有表3)使用
INSERT into y SELECT*FROM x
填充这些表4)
TRUNCATE TABLE x
将现有db的表重置为新表。不幸的是,没有一条SQL语句可以做到这一点。显然他们试过了,但它太多了,导致数据丢失。谢谢。。。我曾希望有一种很好的干净的方法,可以通过SQL语句(其中1-3条)而无需循环来实现这一点。哦,好吧,不能总是得到你想要的。