MySQL數據庫(表)的導入導出(備份和還原)


一)在同一個數據庫服務器上面進行數據表間的數據導入導出:

1. 如果表tb1和tb2的結構是完全一樣的,則使用以下的命令就可以將表tb1中的數據導入到表tb2中:

insert into db2.tb2 select * from  db1.tb1

2. 如果表tb1和tb2只有部分字段是相同的,要實現將tb1中的部分字段導入到tb2中相對應的相同字段中,則使用以下命令:

insert into db2.tb2(字段1,字段2,字段3……) select  字段1‘,字段2’,字段3‘,……  from db1.tb1;

二)但是要實現將遠程數據庫中數據表tb1的數據導入到本地數據庫數據表tb2中,並沒有太好的方法像以上例子所示的在本地直接使用SQL語句就能搞定。這時就要使用到數據庫(表)的導出,導入。即將遠程的數據庫(表)導出到本地文件中,然后再將該數據庫(表)導入(還原)到本地數據庫中。這些方法多應用於數據庫的備份和還原中

1.遠程數據庫(表)導出到本地數據庫(表)文件

(1)導出數據庫

mysqldump -h192.168.1.1 -uroot -p123456 --databases mydb > mydb.bak;      //將192.168.1.1主機上的mydb數據庫導出到本地的mydb.bak文件中

(mysqldump  -uroot -p123456 --databases mydb1 > mydb1.bak;                        //將本地mysql服務器上的mydb1數據庫導出到本地的mydb1.bak文件中)

(2)導出數據表

mysqldump -h192.168.1.1 -uroot -p123456 mydb tb1 > tb1.bak;                       //將192.168.1.1主機上的mydb數據庫的tb1數據表導出到本地的tb1.bak文件中

(mysqldump  -uroot -p123456 mydb1 tb2 > tb2.bak;                                      //將本地主機上的mydb1數據庫的tb2數據表導出到本地的tb2.bak文件中)

2. 導入數據庫(表)

(1)導入數據庫

在本地數據庫中創建相對應導出的數據庫mydb同名的數據庫:

mysql> create database mydb;

然后退出數據庫,再使用以下的 命令導入數據庫文件mydb.bak到本地數據庫mydb中:

mysql -uroot -p123456 mydb < /root/data/mydb.bak;

或者進入mysql中,使用sourc指令完成數據庫導入,如下:

mysql> source  /root/data/mydb.bak;                                          // /root/data/mydb.bak是遠程數據庫mydb導出文件的本地存放位置

(2)導入數據表

在本地數據庫中創建相對應導出的數據庫mydb同名的數據庫:

mysql> create database mydb;

然后在mysql中使用source指令來完成數據表的導入,如下:

mysql> source /root/data/tb1.bak;                                               // /root/data/tb1.bak是遠程數據表tb1導出文件的本地存放位置

 

三) 導出表記錄到文件

mysql -hxxx.xxx.xxx.xxx -uroot -pxxxxxx -D WHOIS -e "select domain from domainInfo where queryFlag = '2' or queryFlag = '3'" >  /data/dump/overdue

注意:在數據庫(表)的導入、導出過程中,視數據庫(表)的大小,需要一定的時間開銷,請耐性等候……


四)導入、導出數據表中的數據


1. 導出表數據到文件中:
mysql -uroot -p123456 --default-character-set=utf8
use guanjia;
select * from driver into outfile '/tmp/a.txt';

(select * from crawlDocs order by DocCrawlTime desc limit 2000 into outfile '/tmp/weixinData' FIELDS TERMINATED BY ',';)
一般最好是導出到/tmp目錄下,因為這樣mysql用戶也可以寫入。




2. 表數據導入到數據表中:
mysql -uroot -p123456 --default-character-set=utf8
use guanjia;
load data infile '/tmp/a.txt' into table test CHARACTER SET utf8;

(load data infile '/tmp/weiData' into table crawlDocs CHARACTER SET utf8 FIELDS TERMINATED BY ',';)

如果導入時出現類似 ERROR 29 (HY000): File '/tmp/a.txt' not found (Errcode: 13)的錯誤,則很可能是因為mysql用戶沒有權限訪問該文件,
則使用 chown mysql:mysql /tmp/a.txt 將該文件的所屬設為mysql用戶,再次執行上面的命令則一般可以完成導入。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: