2011-01-15 72 views
1

在phpMyAdmin下操作,我可以“复制数据库”,然后选择复制数据库到一个新的数据库,包括结构和数据

  • 结构和数据
  • 复制
  • 添加AUTO_INCREMENT值之前,CREATE DATABASE

我需要能够做到这一点,而不使用phpMyAdmin。

我知道如何创建数据库和用户。 我有一个源数据库,我可以从中工作,所以我真正需要的是如何复制所有表结构和数据部分。 (我知道,困难的部分)

系统()& EXEC()不适合我的选择这就排除了的mysqldump。 (我认为)

如何循环遍历每个表并重新创建其结构和数据?

难道仅仅是通过

SHOW TABLES 

然后将结果为每个表通过

DESCRIBE tablename 

然后循环循环,有没有得到复制数据的简单方法?


UPDATE

所以,我结束了去:

SHOW TABLES; 

为每个表,然后我做了

SHOW CREATE TABLE `tablename`; 

然后

INSERT INTO `newBDname`.`tablename` SELECT * FROM `existingDBname`.`tablename`;  
+0

难道你不能在源数据库上运行'mysqldump'并将其直接插入到SQL选项卡中的查询中或通过phpMyAdmin中的导入工具吗? –

+0

我需要在phpMyAdmin之外做到这一点,并且mysqldump目前不是一个选项。 – Jason

回答

4

您可以在SHOW TABLES使用mysql_fetch_assoc,然后为每个结果,存储mysql_fetch_result SHOW的输出CREATE TABLE表名$,然后$ show_create_table

希望帮助...更多发出的mysql_query到帮助比为你做。 :)

+0

+1我也帮你。 –

+0

我想我会接受这个自从他第一次以来;-) – Jason

+0

@Jason其实,他发布了3分钟后我。 :P但所有重要的是你有你的解决方案! –

3

使用SELECT INTO来完成此操作。

SELECT * 
INTO destinationDB..newTable 
FROM sourceDB..existingTable 
+0

我可以在数据库上做到这一点吗? – Jason

+0

@Jason我更新了我的例子。这应该跨数据库工作。 –

+0

完美...现在,如果我可以接受你的答案和@ Spechal在一起 - 他们让我100%的需要。 – Jason

相关问题