2010-04-28 71 views
8

我正在編寫一個PHP腳本來爲了版本控制目的從我的數據庫中生成SQL轉儲。它已通過運行適當的SHOW CREATE ....查詢來轉儲數據結構。現在我想傾倒數據本身,但我不確定最好的方法。我的要求是:在PHP中生成MySQL中的數據轉儲從PHP

  • 我需要每行一個記錄
  • 行必須按主鍵
  • SQL進行排序必須是有效和準確無論數據類型(整數,字符串,二進制數據... )
  • 轉儲當數據沒有改變

我可以檢測和運行mysqldump作爲外部命令但增加了一個額外的系統要求和我需要解析的輸出以便去除標頭應該是相同的和腳本與轉儲信息我不需要(如服務器版本或轉儲日期)。我希望儘可能簡化我的腳本,以便它可以保存在獨立的文件中。

我的替代品是什麼?

+0

同時,我試用SHOW INDEX和mysql_real_escape_string() – 2010-04-28 11:56:07

+0

mysqldump並沒有真正添加額外的系統需求,它附帶mySQL。 – 2010-04-30 12:01:27

+0

因此,mysqldump添加MySQL作爲系統要求。這裏的大多數開發者都沒有本地服務器:他們連接到局域網中的公共服務器。 – 2010-04-30 12:54:51

回答

1

我認爲mysqldump輸出解析仍然是最簡單的。我認爲你不得不排除的元數據很少,因此,這些元數據應該只是幾行代碼。

你也可以看看下面的mysqdump選項:--tab,--compact

0

總是可以嘗試system()函數。希望你在linux :)

+1

Linux以外還有系統:) – 2010-04-29 08:37:14

0

「SELECT * FROM表名順序按主鍵」 可以從INFORMATION_SCHEMA數據庫或「顯示拿到表名錶「命令。也可以從「顯示錶名索引」 然後循環並創建插入語句字符串的主鍵