mysql同步表到本地_sql 同步远程数据库(表)到本地
一)在同一個(gè)數(shù)據(jù)庫服務(wù)器上面進(jìn)行數(shù)據(jù)表間的數(shù)據(jù)導(dǎo)入導(dǎo)出:
1. 如果表tb1和tb2的結(jié)構(gòu)是完全一樣的,則使用以下的命令就可以將表tb1中的數(shù)據(jù)導(dǎo)入到表tb2中:
insert into db2.tb2 select * from? db1.tb1
2. 如果表tb1和tb2只有部分字段是相同的,要實(shí)現(xiàn)將tb1中的部分字段導(dǎo)入到tb2中相對應(yīng)的相同字段中,則使用以下命令:
insert into db2.tb2(字段1,字段2,字段3……) select? 字段1‘,字段2’,字段3‘,……? from db1.tb1;
二)但是要實(shí)現(xiàn)將遠(yuǎn)程數(shù)據(jù)庫中數(shù)據(jù)表tb1的數(shù)據(jù)導(dǎo)入到本地?cái)?shù)據(jù)庫數(shù)據(jù)表tb2中,并沒有太好的方法像以上例子所示的在本地直接使用SQL語句就能搞定。這時(shí)就要使用到數(shù)據(jù)庫(表)的導(dǎo)出,導(dǎo)入。即將遠(yuǎn)程的數(shù)據(jù)庫(表)導(dǎo)出到本地文件中,然后再將該數(shù)據(jù)庫(表)導(dǎo)入(還原)到本地?cái)?shù)據(jù)庫中。這些方法多應(yīng)用于數(shù)據(jù)庫的備份和還原中
1.遠(yuǎn)程數(shù)據(jù)庫(表)導(dǎo)出到本地?cái)?shù)據(jù)庫(表)文件
(1)導(dǎo)出數(shù)據(jù)庫
mysqldump -h192.168.1.1 -uroot -p123456 --databases mydb > mydb.bak;????? //將192.168.1.1主機(jī)上的mydb數(shù)據(jù)庫導(dǎo)出到本地的mydb.bak文件中
(mysqldump? -uroot -p123456 --databases mydb1 > mydb1.bak;??????????????????????? //將本地MySQL服務(wù)器上的mydb1數(shù)據(jù)庫導(dǎo)出到本地的mydb1.bak文件中)
(2)導(dǎo)出數(shù)據(jù)表
mysqldump -h192.168.1.1 -uroot -p123456 mydb tb1 > tb1.bak;?????????????????????? //將192.168.1.1主機(jī)上的mydb數(shù)據(jù)庫的tb1數(shù)據(jù)表導(dǎo)出到本地的tb1.bak文件中
(mysqldump? -uroot -p123456 mydb1 tb2 > tb2.bak;????????????????????????????????????? //將本地主機(jī)上的mydb1數(shù)據(jù)庫的tb2數(shù)據(jù)表導(dǎo)出到本地的tb2.bak文件中)
2. 導(dǎo)入數(shù)據(jù)庫(表)
(1)導(dǎo)入數(shù)據(jù)庫
在本地?cái)?shù)據(jù)庫中創(chuàng)建相對應(yīng)導(dǎo)出的數(shù)據(jù)庫mydb同名的數(shù)據(jù)庫:
mysql> create database mydb;
然后退出數(shù)據(jù)庫,再使用以下的 命令導(dǎo)入數(shù)據(jù)庫文件mydb.bak到本地?cái)?shù)據(jù)庫mydb中:
mysql -uroot -p123456 mydb < /root/data/mydb.bak;
或者進(jìn)入mysql中,使用sourc指令完成數(shù)據(jù)庫導(dǎo)入,如下:
mysql> source? /root/data/mydb.bak;????????????????????????????????????????? // /root/data/mydb.bak是遠(yuǎn)程數(shù)據(jù)庫mydb導(dǎo)出文件的本地存放位置
(2)導(dǎo)入數(shù)據(jù)表
在本地?cái)?shù)據(jù)庫中創(chuàng)建相對應(yīng)導(dǎo)出的數(shù)據(jù)庫mydb同名的數(shù)據(jù)庫:
mysql> create database mydb;
然后在mysql中使用source指令來完成數(shù)據(jù)表的導(dǎo)入,如下:
mysql> source /root/data/tb1.bak;?????????????????????????????????????????????? // /root/data/tb1.bak是遠(yuǎn)程數(shù)據(jù)表tb1導(dǎo)出文件的本地存放位置
三) 導(dǎo)出表記錄到文件
mysql -hxxx.xxx.xxx.xxx?-uroot -pxxxxxx -D WHOIS -e "select domain from domainInfo where queryFlag = '2'?or queryFlag = '3'" >??/data/dump/overdue
注意:在數(shù)據(jù)庫(表)的導(dǎo)入、導(dǎo)出過程中,視數(shù)據(jù)庫(表)的大小,需要一定的時(shí)間開銷,請耐性等候……
四)導(dǎo)入、導(dǎo)出數(shù)據(jù)表中的數(shù)據(jù)
1. 導(dǎo)出表數(shù)據(jù)到文件中:
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 ',';)
一般最好是導(dǎo)出到/tmp目錄下,因?yàn)檫@樣mysql用戶也可以寫入。
2. 表數(shù)據(jù)導(dǎo)入到數(shù)據(jù)表中:
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 ',';)
如果導(dǎo)入時(shí)出現(xiàn)類似 ERROR 29 (HY000): File '/tmp/a.txt' not found (Errcode: 13)的錯(cuò)誤,則很可能是因?yàn)閙ysql用戶沒有權(quán)限訪問該文件,
則使用 chown mysql:mysql /tmp/a.txt 將該文件的所屬設(shè)為mysql用戶,再次執(zhí)行上面的命令則一般可以完成導(dǎo)入。
總結(jié)
以上是生活随笔為你收集整理的mysql同步表到本地_sql 同步远程数据库(表)到本地的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 撒娃迪卡什么意思
- 下一篇: 7的分解与组成教案一等奖
