mysqldump備份或導出數據命令

請多多留言指教

注:以git-bash爲基礎,介紹mysqldump命令,導出相關數據

業務需求:根據條件檢索並導出某張表中的數據,生成數據備份作爲遷移數據

 

1、查看mysql安裝目錄

打開Navicat,點擊查詢,新建查詢,show variables like "%char%";

2、mysqldump命令在什麼位置執行?

a> cd進入到mysql安裝目錄,再次cd進入bin目錄

b> 查看幫助信息:mysqldump -help,查看詳細幫助信息:mysqldump --help

3、簡單執行mysqldump命令,備份數據庫

mysqldump -uroot -p123456 ayiol > d:/test_20200615.dump

以下爲備份文件的部分內容:

4、備份某一個數據庫中某一個表

命令格式如下

mysqldump -u用戶名 -p密碼 數據庫名 表名 --where="篩選條件" > 導出文件路徑

例子

mysqldump -uroot -p123456 ayiol a_user > test_20200615_user.sql

5、備份某一個數據庫中某一個表,按條件備份(整行數據)

mysqldump -uroot -p123456 -t ayiol a_city --where="id<10" --triggers=false --replace > d:/city_0615.sql

說明

-t:只導數據,不增加create table建表和drop table語句

--where:條件

--triggers=false:不導觸發器

--replace:使用REPLACE INTO 取代INSERT INTO

解釋:Replace INTO和INSERT INTO的區別:

REPLACE的運行與baiINSERT很相似。只有du一點例外,假如表中的一箇舊zhi記錄與一個用於PRIMARY KEY或一個UNIQUE索引的dao新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。

注意,除非表有一個PRIMARY KEY或UNIQUE索引,否則,使用一個REPLACE語句沒有意義。該語句會與INSERT相同,因爲沒有索引被用於確定是否新行復制了其它的行。

 

6、按條件備份(指定字段)

例子

mysql -uroot -p123456 ayiol -e "SELECT id,name,code from a_city where id < 10 INTO OUTFILE'd:/temp/0617_city_part_property.sql'"

結果

悲劇了。。。(並不是我想要的數據格式,想要的爲insert into格式)

又找了一種解決方案

mysql -uroot -p123456 ayiol -e "select concat('insert into a_city(id,name,code) values(',id,',\'',name, '\'',',\'',code, '\');') from a_city where id < 10 INTO OUTFILE 'd:/temp/0617_city_part_property_02'"

結果

總算解決了,已親自測試(網上查找的資料)

7、按條件備份(在insert中顯示具體的字段名)

例子

mysqldump -uroot -p123456 --skip-extended-insert --complete-insert -t ayiol a_city --where="id<10">d:/temp/0617_hasInsertValues.sql

結果

解釋

-t:只導數據,不增加create table建表和drop table語句

-c(--complete-insert):在insert中增加具體的字段名

-w(--where):後邊跟where條件,只導出符合條件的數據

-skip-extended-insert:一行一行的導出

 

遇到的問題:

1、備份sql文件(文件很大),打開Navicat,指定數據庫,運行sql文件時 提示10038錯誤碼

最終查找問題: mysql安裝目錄下的my.ini文件中,max_allowed_packet未設置

解決方式:打開mysql安裝目錄,找到my.ini文件,新增屬性max_allowed_packet=1024M

注:

MySQL max_allowed_packet設置以字節發送給服務器的最大數據包大小. (默認: 1MB),數據庫變更需要:大的插入和更新可能會被max_allowed_packet參數限制,導致失敗。

 

mysqldump備份命令

命令格式

mysqldump -h主機名 -P端口 -u用戶名 -p密碼 --database 數據庫名 > 文件名.sql

例子

mysqldump -hlocalhost -P3306 -uroot -p123456 -t ayiol a_city --where="id < 10 " --triggers=false --replace  > D:/temp/0616_city.sql

 

其它引用參考網址(mysqldump命令):

https://baijiahao.baidu.com/s?id=1612955427840289665&wfr=spider&for=pc

https://www.bbsmax.com/A/l1dy8WYx5e/

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