2012-07-09 42 views
3

任何地方都找不到我的問題的好答案。如果我想要創建一個與phpMyAdmin中的Export選項卡具有相同功能的函數,我該怎麼做?我不知道是否有一個mysql函數執行此操作,或者如果phpMyAdmin只是手動生成導出文件(在SQL中)。沒有外殼訪問。只需使用PHP。我嘗試了mysqldump的文檔,但似乎需要使用shell(我不太確定那是甚麼 - 也許我的問題是你是如何使用shell?)。我的愚蠢想法(是不是所有?)是允許非技術用戶在一臺服務器(比如本地主機)上使用MySQL構建站點,然後將站點,數據庫和所有站點導出到另一臺服務器(例如。遠程服務器)。phpMyAdmin導出如何工作?

我覺得我很清楚導入過程。請幫忙。

回答

5

您可以檢查phpMyAdmin源代碼(開源軟件的優勢)。檢查export.php腳本和庫/ export/sql.php腳本文件中的支持功能。

總之,什麼phpMyAdmin的作用是:

  • 獲得在給定的數據庫中的表的列表(SHOW TABLES FROM ...),
  • 得到每個表的創建查詢(SHOW CREATE TABLE ...),
  • 分析它,並從中提取列定義,
  • 得到的所有數據(SELECT * FROM ...)
  • 根據列數據生成一個查詢。

我爲自己的應用程序編寫了類似的代碼(用於備份目的,當phpMyAdmin的GPL許可證不允許我使用它時),但是我使用DESCRIBE來獲得列定義。我認爲他們寧願解析SHOW CREATE TABLE輸出,因爲它包含比DESCRIBE輸出更多的信息。

這種生成SQL語句的方式需要小心謹慎地處理轉義,但它允許一些靈活性,因爲可以轉換類型,過濾或清理數據等。它比使用像mysqldump,你應該注意不要消耗所有可用的內存(很快寫入,經常寫入,不要將所有內容都保存在內存中)。

如果你要實現一個遷移過程(從服務器到服務器),用一些shell腳本和直接調用mysqldump可能會更容易,除非你會用PHP做所有事情。

+2

謝謝,正是我在找的東西。是的,我想,因爲我知道PHP我想在PHP中做所有事情。這是類似於WordPress的CMS編程。我想phpMyAdmin運行了一系列步驟,但是我必須花很多時間從頭開始才問。我的重點是重塑輪子,浪費很多週六的好時光。 – philtune 2012-07-09 12:51:22

+0

偉大的問題。今天我學到了一些瘋狂的事我不明白他們爲什麼不提供類似於數據庫連接的mysqldump功能。爲什麼要將傾銷分爲另一個計劃? – Phil 2017-03-29 15:21:15

+0

@ Phil_1984_每次我必須編寫代碼來執行操作時,我都想知道同樣的事情。這確實非常有用。我不知道任何這樣做的RDBMS,他們有SQL指令在本地進行轉儲(如SELECT ... INTO OUTFILE或BACKUP DATABASE)或命令行工具或GUI工具,但無法通過自己的網絡進行轉儲應用。 – 2017-03-29 19:59:22