mysqldump 是在 操作系統命令行下運行的,不是在 MySQL 命令行下運行的。
登陸數據庫:
登陸本地mysql : mysql -h localhost -u root -p123456
登陸到指定的數據庫 mysql -h 192.168.1.68 -u root -p123456 ppos_center
進入MySQL目錄下的bin文件夾,
如:D:\xampp\mysql\bin>
一般形式:mysqldump -h IP -u 用戶名 -p 數據庫名 > 導出的文件名
一:數據庫的導出(備份)
0:(備份數據庫即導出所有表以及數據 不加-d)
mysqldump -h localhost -u root -p gogs> G:\aa\gogs.sql
數據庫導出,前提是保存位置有寫的權限 xiao@ubuntu:/usr/local/mysql/bin$ mysqldump -uroot papaid > /data/www-data/test/papaid.sql xiao@ubuntu:/usr/local/mysql$ mysqldump -uroot gogs > /data/www-data/test/gogs.sql D:\xampp\mysql\bin>mysqldump -uroot -p123456 papaid > I:\aa\papaid.sql mysql>source I:\aa\ppos_center.sql
1:(備份數據庫即導出所有表結構)
D:\xampp\mysql\bin>mysqldump -h localhost -u root -p -d gogs> G:\aa\gogs.sql ENTER PASSWORD:******
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql -d 沒有數據 --add-drop-table 在每個create語句之前增加一個drop table
2 :(導出某張表的表結構不含數據)
mysqldump -h localhost -u root -p -d test pollution > G:\arcgisworkspace\zypdoc\test.sql
3:(導出某張表的表結構和數據,不加-d)
mysqldump -h 192.168.1.68 -u root -p123456 gogs user> G:\aa\user.sql
0:備份多個數據庫的語法
D:\xampp\mysql\bin>mysqldump -h 127.0.0.1 -u root -p --databases gogs papaid> G:\aa\test.sql
1:備份所有的數據庫的語法
D:\xampp\mysql\bin>mysqldump -h 127.0.0.1 -u root -p --all -databases > G:\aa\test.sql(暫時沒有通過,不知道為什呢)
二:數據庫的導入(還原)
0:導入數據庫(首先得創建數據,再導入)
D:\xampp\mysql\bin>mysql -h localhost -u root -p(進入mysql下面) create database abc;(創建數據庫) show databases;(就可看到所有已經存在的數據庫,以及剛剛創建的數據庫abc) use abc;(進入abc數據庫下面) show tables;(產看abc數據庫下面的所有表,空的) source G:\aa\test.sql(導入數據庫表) show tables;(查看abc數據庫下面的所有表,就可以看到表了) desc pollution;(查看表結構設計) select * from pollution; exit(或者ctrl + c)退出mysql
三:MYSQL如何導出文本文件 (備份為csv,txt,等,更加有用)
0:mysql 下導出為指定格式的數據的外部任意文件類型 mysql>
use dbname
Database Changed
select * from pollution into outfile 'G:\\arcgisworkspace\\zypdoc\\text.txt'; (指導出數據的,注意轉義字符哦)
select * from pollution into outfile 'G:\\arcgisworkspace\\zypdoc\\text.csv' FIELDS TERMINATED BY '\,'; (輸出格式控制)
select * from ppos_seq into outfile 'I:\\aa\\ppos_seq.txt'; select * from ppos_seq into outfile 'I:\\aa\\ppos_seq.csv'; select * from ppos_seq into outfile 'I:\\aa\\ppos_seq2.csv' FIELDS TERMINATED BY '\,';
結果為:
1,汽車尾氣,200
2,建築揚沙,180
3,汽車噴漆,160
4,燃煤,240
5,其它,80
知識補充:
一般形式:select [列名稱] from tablename [where] into outfile '目標文件路徑' [option]
其中option參數常用的5個選項
FIELDS TERMINATED BY ‘字符串’:設置字符串為字段的分割符,默認值為 \t;
FIELDS ENCLOSED BY ‘字符’:設置字符串括上char varchar text等字符型字段,默認值為 無任何符號;
FIELDS OPTIONALLY ENCLOSED BY ‘字符’:設置字符串括上字段的值,默認值為 無任何符號;
LINES STARTING BY ‘字符串’:設置每一行開頭的字符,默認值為 無任何字符;
FIELDS ESCAPED BY ‘字符’:設置轉義字符,默認值為 \;
LINES TERMINATED BY ‘字符串’:設置每行結束符,默認值為 \n;
如:
select * from pollution into outfile 'G:\\arcgisworkspace\\zypdoc\\text2.csv' FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
結果為:
>1,"汽車尾氣","200"
>2,"建築揚沙","180"
>3,"汽車噴漆","160"
>4,"燃煤","240"
>5,"其它","80"
1:mysqldump 下導出為指定格式的數據的外部任意文件類型 D:\xampp\mysql\bin>
mysqldump -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution "--fields-terminated-by=," (記住不要任何多余的空格,也不用轉移字符;-p后面也不用寫password;
注意目標目錄是文件夾,文件名是表名,后綴是txt文件)
知識補充:
mysqldump -u root -p -T 目標目錄 dbname tablename [option]
option 和 上面的mysql的一樣,只是更改為
"--fields-terminated-by=字符"(不要任何多余的空格,就是指fields-terminated-by緊密相連的)
四:MYSQL如何導入文本文件 (更加有用)
(1)mysql 下導出為指定格式的數據的外部任意文件類型 mysql>
第一步:創建對應字段的數據表
create table csv_test2( id int(8) primary key, name varchar(64), value int(32) );
(2)插入:加入value的類型開始時設計錯了,如何更改:ALTER table csrv_test2 MODIFY column value varchar(32);
(3)第二步:導入外部數據
LOAD DATA INFILE 'D:\\tjdata_metro\\test\\mysql_infile3.csv' INTO TABLE csv_test2 FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED by'\r\n' ignore 1 lines (id,name,value);
上面的 lines terminated by '\r\n' 是 要求換行符號,為 windows的換行
上面的 ignore 1 lines是 忽略第一行的標題行。