關於mysqldump更多詳細內容請參考:https://www.cnblogs.com/chenmh/p/5300370.html
背景:
服務器A上部署了新的項目,並且在此服務器建了新的數據表(新的數據表中沒有數據),所以需要自己導入一下數據(因爲某些原因吧)。因爲之前在測試服務器上(叫它服務器B)已經導入過了相應的數據,所以就可以把服務器B數據庫裏的數據導入到服務器A的數據庫中。
目標:
把服務器B數據庫中的數據 導入到 服務器A的數據庫中(B-->A)。
思路:
使用mysqldump命令做導出和導入(其實我想要的並不是備份,只是把服務器B中的數據導出,然後在服務器A中做insert)。
一般情況下,在做數據備份或者導出數據的時候,總會遇到一些問題,所以,建議是,在數據表數據較少的時候,直接遠程連接並備份(或導出)數據是一個不錯的選擇,表大小大約在20~30M左右。如果要備份整個數據庫,就去掉TABLENAME,直接使用DATABASE,本地的數據庫備份的話,就不用寫端口信息,去掉 -h 參數和遠程IP地址就好。
命令示例:
mysqldump -uUSERNAME -p -h 192.168.0.1 DATABASE TABLENAME > /localpath/datafile.sql
但大多數情況下需要操作的的數據量比較大,數據庫遠程連接資源一般都會有一定的連接限制,常常會遇到數據導出到一半就自動斷開。這樣的話就考慮在遠程數據庫服務器的環境下導出備份腳本,然後再到目標服務器中執行腳本,這樣的操作效率很高。
操作記錄:
- 連接到服務器B,在服務器B中使用語句生成sql腳本文件
mysqldump -uroot -p database table_1 > hotarea_sql/table_1.sql
這樣就生成了數據表table_1的數據備份腳本。
- 使用scp命令,將文件傳輸到服務器A
scp table_1.sql xxx.xxx.xxx.xxx:~/
- 連接到服務器A,並登陸到mysql數據庫
mysql>use [database]; mysql>set names utf8; --設置傳輸編碼,避免中文亂碼 mysql>source [~/table_1.sql]; -- source 文件路徑
使用這個source命令執行sql腳本效率可以說是相當快了,四萬多條數據的insert,還沒眨眼就執行完了。
-
最後可以使用sql驗證一下數據是否全部insert成功:select count(*) from table1;