第一種方案的優點:會重建數據文件,減少數據文件的占用空間。
創新互聯專注于科爾沁網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供科爾沁營銷型網站建設,科爾沁網站制作、科爾沁網頁設計、科爾沁網站官網定制、重慶小程序開發服務,打造科爾沁網絡公司原創品牌,更為您提供科爾沁網站排名全網營銷落地服務。
第一種方案的缺點:時間占用長。(導入導出都需要很長的時間,并且導出后的文件還要經過網絡傳輸,也要占用一定的時間。)
第二種方案的優點:設置完成后傳輸無人值守
第二種方案的缺點:
設置繁瑣。
傳輸中網絡出現異常,不能及時的被發現,并且會一直停留在數據傳輸的狀態不能被停止,如不仔細觀察不會被發現異常。
傳輸相對其他fang時間長。
異常后很難從異常的位置繼續傳輸。
第三種方案的優點:時間占用短,文件可斷點傳輸。操作步驟少。(絕大部分時間都是在文件的網絡傳輸)
第三種方案的缺點:可能引起未知問題,暫時未發現。
一、一般步驟
1、用phpADMIN生成CSV格式文件
以PHP+MySQL模式建立個人主頁的讀者,在自己的機器上都有PHP+MySQL環境吧?就在這個環境下,用phpADMIN生成以分號為分隔符的dotmud.csv文件。
2、將dotmud.csv文件通過FTP上傳到服務器。
3、上傳data.php程序(程序附后),在瀏覽器調用data.php程序,將dotmud.csv文件的內容加入到數據庫。
二、特殊處理
一般的數據,通過上述步驟,基本可以順利上傳。但對于包含特殊字符的數據(比如數據庫記錄中包含換行符、單引號、分號),就要做些特殊的處理。
1、換行符的處理
PHP的fgetcsv()函數以換行符作為每行的結束標志。如果MySQL數據表的記錄包含換行符,fgetcsv()就不能完整讀取記錄行。
筆者的解決方法是修改phpADMIN的lib.inc.php3文件(讀者也可以不修改phpADMIN文件,而是用其他方法直接加工phpADMIN生成的dotmud.csv文件,達到同樣的效果)的get_table_csv()函數:
在 $schema_insert=ereg_replace($sep."$","",$schema_insert) 行后加入如下命令行
$schema_insert=ereg_replace("\r\n","`return`",$schema_insert)
將換行符轉換為不容易出現的換行標識串`return`(讀者可根據自己數據的特點設置獨特的換行標識串),再在data.php程序中加一行命令$data[$i]=ereg_replace("`return`","\r\n",$data[$i]),用來將換行標識串還原成換行符。
2、分隔符的處理
如果MySQL記錄行恰好包含CSV分隔符,fgetcsv()進行分隔處理時就會出現問題。
筆者仍然是通過修改lib.inc.php3文件解決的。
在get_table_csv()的$schema_insert="$row[$j]".$sep行前加一行
$row[$j]=ereg_replace($sep,"`return_sep`",$row[$j]) 命令,將分隔符轉為分隔標識串`return_sep`,同時在data.php中用命令行 $data[$i]=ereg_replace("`return_sep`",";",$data[$i]) 進行還原處理。
3、單引號的處理
MySQL的SQL語句行對單引號有特殊的定義,如果直接提交含單引號的SQL語句,就會出錯。這種情況需要加上轉義符。在data.php中加一行 $data[$i]=ereg_replace("'","\'",$data[$i]) 就可解決。
另外,在數據記錄特別多的的情況下,dotmud.csv文件可能比較大,如果在服務器的限定時間內不能執行完data.php程序,就需要按行分拆dotmud.csv。如筆者有個7000行的dotmud.csv文件,在自己的機器上執行到600行就提示超時,便拆成10個文件上傳到全路互聯(),結果對方的服務器速度快,每個文件的處理時間還不到1秒,而php默認的限定執行時間可是30秒啊!看來我做的分拆實屬多余。
以上方法解決了數據庫內容的上傳問題。對于數據庫結構的上傳,只要稍微修改一下data.php程序就可實現。其實,如果庫結構比較簡單,用phpADMIN更方便
遷移MySQL數據庫通常只需要幾個簡單的步驟,但是由于您要轉移的數據量可能比較龐大,因此一般耗時也會比較長。
下面的步驟將指導您如何從舊的服務器上導出MySQL數據庫,對它進行安全加固;然后將其復制并導入到新的服務器上,以保證數據的完整。
將MySQL數據庫導出至轉儲文件(dump file)
Oracle提供了一個名為mysqldump的工具,允許您輕松地將數據庫結構和其數據導出到一個SQL的轉儲文件。您可以使用如下的命令:
1.mysqldump -u root -p --opt [database name] [database name].sql?
不過,請注意如下幾點:
我們可以使用--single-transaction的標志,以避免數據庫在導出數據的過程中被鎖死。這樣能夠在將數據導出到轉儲文件的同時,您仍可繼續在舊的數據庫上更新數據。不過請注意,那些在導出進程已經開始之后被更新的數據,是不會被導入轉儲文件之中的。
在運行該命令之前,請務必將[database name]替換成您的實際數據庫名稱。
請輸入您自己的用戶名和相對應的密碼,并確保該用戶具有備份數據庫所需的權限。
安全加固備份文件
在大多數情況下,數據是一家企業的最重要的資產。因此,我們不希望數據庫的各種備份被暴露在不受保護的服務器上,因為這樣有可能會造成錯誤地泄露,甚至會出現被黑客竊取等更為糟糕的狀況。
因此,通常您可以嘗試的做法是:壓縮、加密文件,然后刪除原文件。在Linux操作系統上,請使用以下的命令對已壓縮文件進行加密:
1.zip --encrypt dump.zip db.sql?
在壓縮開始之前,系統將提示您輸入密碼。
傳輸備份文件
至此,我們已經獲得了一個加密的轉儲文件。下面讓我們通過網絡使用SCP命令,將其傳輸到新的服務器上:
1.scp /path/to/source-file user@host:/path/to/destination-folder/?
將MySQL轉儲導入新服務器
通過上面一步,我們已將備份文件傳到了新的服務器上,下面讓我們來進行解密和提取:
1.unzip -P your-password dump.zip?
為了存儲空間和安全方面的原因,一旦文件導入成功,請記得刪除其對應的轉儲文件。
您可以使用以下的命令來導入文件:
1.mysql -u root -p newdatabase /path/to/newdatabase.sql?
在新服務器上驗證導入的數據
現在我們在新服務器上已經導入了數據庫,那么我們就需要一種方法來驗證數據的真實存在,并確保沒有任何遺漏。
我建議您同時在舊的和新的數據庫上運行如下查詢,并將獲得的結果進行對比。
該查詢會在所有的表里計算行數,以顯示出新、舊數據庫中的數據量。
1.SELECT ??
2.TABLE_NAME, ??
3.TABLE_ROWS ?
4.FROM ??
`
5.information_schema`.`tables` ?
6.WHERE ??
`
7.table_schema` = 'YOUR_DB_NAME';?
此外,我建議您檢查各個表中數字列的MIN和MAX記錄,以確保數據本身是有效的,而不僅僅是看數據的總量(雖然這是查詢所唯一能夠讀出的值)。另一種可供測試的選擇是將數據庫從新的服務器導出為SQL轉儲文件,并將其與舊服務器的SQL轉儲文件做比較。
此外,在應用程序被遷移之前,我建議您先將一個應用程序的實例重定向到新的數據庫上,以確認一切運行正常。
另一種導出和導入的選項
我們之所以把該選項放在最后,是因為我們的確不建議您去使用它。
該方法實現起來非常的容易,因為它僅使用一個命令,便能一次性將轉儲文件導出、傳輸、并將其數據導入到新的數據庫之中。
而它的不足之處在于,一旦其網絡鏈接斷掉,您就需要重新啟動它了。
因此,我們認為它并不值得被推薦,尤其是在大型數據庫中,可能會非常不適用。
當然,如果您非要嘗試一下的話,可以使用如下的命令:
1.mysqldump -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword'?
重要提示
請確保在新舊兩處,安裝有相同官方發行版本的MySQL服務器。否則,你需要按照MySQL網站上的升級說明來進行統一(請參見(https://dev.mysql.com/doc/refman/5.7/en/upgrading.html)。
請確保您在舊的服務器上擁有足夠的空間來保存轉儲文件和壓縮文件(應該有db_size×2的空間)。
請確保您在新的服務器上擁有足夠的空間來保存加密的和解密的轉儲文件、并能導入數據庫(應該有db_size×3的空間)。
如果您曾經考慮過只是將datadir從一個數據庫轉移到另一個的話,我建議您最好不要這樣做。否則,您會搞亂數據庫的內部結構,而且會給將來可能的問題埋下隱患。
在新的服務器配置中,請不要忘了配置諸如innodb_log_file_size這樣的重要標志。因為如果忘記了根據新服務器的規格而更新配置的話,很可能會導致嚴重的性能問題。
在許多情況下,一般升級到新的數據庫服務器的初衷是為了提高查詢性能。而如果此類升級沒有達到預期的改善,那么您就應該考慮去優化SQL查詢,而不僅僅是升級硬件那么簡單了
寫一個數據導入導出的代碼。
從一個數據庫表中讀取保存到另一個數據庫表。
循環導入一個表中的所有的記錄。
然后再導入其他的表。
php mysql 可以很方便的遠程連接數據庫的。
方法/步驟
第一步,打開Navicat for MySQL軟件,查看數據庫book和student,對比數據庫表,如下圖所示:
第二步,對比結果發現這兩個數據庫有兩張表一致,需要將book數據庫的數據同步到student數據庫;選中book數據庫,選擇“Tools”,點擊“Data Transfer...”,如下圖所示:
第三步,選擇目的源為CMP,Database為student,點擊“Start”開始同步數據,如下圖所示:
第四步,這時會彈出同步數據的提示,點擊“OK”,確定通過,如下圖所示:
第五步,完成數據同步后,這時消息日志為運行成功,如下圖所示:
第六步,查看數據庫student,對應的表數據,可以看到表數據已經同步過來,如下圖所示:
方法/步驟
1
登錄到phpMyAdmin
2
新建一個要導入的數據庫,點擊“+new”
3
如圖,分別填寫數據庫名稱,以及選擇數據庫的排序規則,
4
完成步驟3,點擊“創建”
5
完成步驟4,從右側就可以看到我們新創建的數據庫了,如果沒有立即顯示,刷新即可立馬顯示了。
6
單擊我們新創建的數據庫,
7
然后,我們選擇“導入”,
8
完成步驟7,我們點擊“選擇文件”,
9
點擊了“選擇文件”之后,就會出現如圖所示的彈出框,我們選擇要導入的sql就可以了,后綴名可以是.sql,也可以是壓縮文件.zip。如圖,選擇好文件之后,點擊“確定”就可以了
10
完成步驟⑨,你就可以從剛才的頁面中看到自己上傳的文件了,如圖所示,其余選項默認就可以了,然后點擊“執行”就可以了。
11
這個時候,你就可以看到你的數據已經導入到你新創建的數據庫中了
分享標題:mysql怎么數據傳輸,mysql有哪些導入數據的方式
文章起源:http://m.kartarina.com/article10/heipdo.html
成都網站建設公司_創新互聯,為您提供用戶體驗、定制網站、網頁設計公司、軟件開發、微信小程序、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯