Mysql遠端數據導入到本地數據庫

爲什麼會寫這個腳本

在工作中時常要從內網拉數據,有時爲了方便就直接用Navicat工具的數據傳輸,將內網的數據庫數據拉到本地,但每次拉取都需要選擇源頭、目標、某某庫之類的,如果是拉數據的評率高的話,那這種方法的容錯率很低,說不準某個時候寫代碼寫的懵逼懵逼的時候,突然要從內網拉數據,結果把源跟目標填反了,那真的是罪過了。
廢話不多說了,我直接把我寫的腳本貼出來了,往下看。

配置文件、bat腳本

db_local.cnf

[client]
host = localhost
user = root
password = '123456'

db_remote.cnf

[client]
host = 192.168.1.50
user = root
password = '123456'

可能有些同學不清楚爲什麼我這裏要用配置文件來配置數據庫的連接信息,其實是因爲解決連接過程中的警告,將密碼直接寫到命令行裏面,相當於直接暴露密碼,所以認爲不安全。
而配置裏面的數據是什麼意思呢,其實是數據庫的客戶端啓動選項,我們在下面腳本中指定加載這個配置文件的客戶端啓動選項。

transferData.bat

:: function: 從db_remote到db_local的數據傳輸

@echo off

SET local_db=my_share
SET remote_db=my_share

ECHO ******** copy start ********

mysqldump --defaults-extra-file=./db_remote.cnf %remote_db% --opt --compress --skip-lock-tables --verbose | mysql --defaults-extra-file=./db_local.cnf %local_db%

ECHO ******** copy success ********
PAUSE

雙擊transferData.bat即可拉取數據了。

參數科普

配置文件的作用
主要是消除直接輸入密碼導致的警告
因而專用 --defaults-extra-file=./db_remote.cnf 來直接加載配置文件

–defaults-extra-file=file_name
在啓動中不僅僅會加載指定的配置文件,還會加載所有默認需要加載的配置文件
–defaults-file=file_name
在啓動中只會加載指定的配置文件

管道符

| 是一個管道符
用管道符將mysqldump的輸出流和mysql的輸入流串接在一起

管道符左邊命令的輸出作爲管道符右邊命令的輸入
連續使用管道意味着第一個命令的輸出會作爲第二個命令的輸入,
第二個命令的輸出又會作爲第三個命令的輸入

mysqldump命令解析

opt
等同於–add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 該選項默認開啓, 可以用–skip-opt禁用.

lock-tables, -l
開始導出前,鎖定所有表。用READ LOCAL鎖定表以允許MyISAM表並行插入。對於支持事務的表例如InnoDB和BDB,–single-transaction是一個更好的選擇,因爲它根本不需要鎖定表。請注意當導出多個數據庫時,–lock-tables分別爲每個數據庫鎖定表。因此,該選項不能保證導出文件中的表在數據庫之間的邏輯一致性。不同數據庫表的導出狀態可以完全不同。

verbose, --v
輸出多種平臺信息。

complete-insert, -c
使用完整的insert語句(包含列名稱)。這麼做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導致插入失敗。
mysqldump -uroot -p --all-databases --complete-insert

compress, -C
在客戶端和服務器之間啓用壓縮傳遞所有信息

如果覺得有用,請給個贊吧,您的每一個贊都是對我最大的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章