一)在同一個數據庫服務器上面進行數據表間的數據導入導出:
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用戶,再次執行上面的命令則一般可以完成導入。