2011-01-15 73 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

相關問題