mysql中數(shù)據(jù)庫(kù)或數(shù)據(jù)的導(dǎo)入導(dǎo)出我們用到命令有mysqldump與source命令了,它們分別有自己的優(yōu)點(diǎn)與作用,下面我來(lái)介紹利用mysqldump導(dǎo)出數(shù)據(jù)與利用source導(dǎo)入備份的數(shù)據(jù).
mysqldump是mysql自帶的一個(gè)數(shù)據(jù)導(dǎo)入導(dǎo)出工具,其官方注釋為:
- shell> mysqldump [options] db_name [tbl_name ...]
- shell> mysqldump [options] –databases db_name …
- shell> mysqldump [options] –all-databases
使用mysqldump命令將整個(gè)數(shù)據(jù)庫(kù)導(dǎo)出,代碼如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables > crazyant.sql
其中-h后面是主機(jī)名,-P后面是端口號(hào),-u后面是用戶名,-p后面是密碼,crazyant是要導(dǎo)出的數(shù)據(jù)庫(kù)名.
由于導(dǎo)出過(guò)程中出現(xiàn)了這個(gè)錯(cuò)誤:
mysqldump: Got error: 1044: Access denied for user 'root'@'127.0.0.1' to database 'crazyant' when using LOCK TABLE
所以在最后面,我加上了–skip-lock-tables這個(gè)選項(xiàng),就沒有錯(cuò)誤了.
mysqldump命令導(dǎo)出時(shí)設(shè)定不需要導(dǎo)出的表,有時(shí)候一個(gè)數(shù)據(jù)庫(kù)中有一些表我們不想導(dǎo)出,這時(shí)候可以使用mysqldump的–ignore-table命令來(lái)設(shè)定過(guò)濾的表,該參數(shù)的用法如下:
- –ignore-table=name Do not dump the specified table. To specify more than one
- table to ignore, use the directive multiple times, once
- for each table. Each table must be specified with both
- database and table names, e.g., //Vevb.com
- –ignore-table=database.table.
可以看出其用法:
• –ignore-table=database.table
•每次只能指定一個(gè)表,如果要指定多個(gè)表,該選項(xiàng)需要寫多次.
使用實(shí)例,代碼如下:
- mysqldump -h 127.0.1.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables –ignore-table=crazyant.table1 –ignore-table=crazyant.table2 –ignore-table=crazyant.table3 –ignore-table=crazyant.table4 > crazyant.sql
使用mysqldump命令只導(dǎo)出1個(gè)表或指定表的方法,也可以在mysqldump的database后面跟上要1個(gè)要導(dǎo)出的表,來(lái)只導(dǎo)出單個(gè)表,代碼如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 –skip-lock-tables crazyant table_a >dump_table_a.sql
也可以寫上多個(gè)要導(dǎo)出的表,以空格分開它們即可,代碼如下:
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 –skip-lock-tables crazyant table_a table_b >dump_two_tables.sql
可以看出,只要用“database_name tablename1 tablename2 tablename3”的方式寫出導(dǎo)出數(shù)據(jù)庫(kù)的表即可.
使用mysqldump命令只導(dǎo)出表結(jié)構(gòu)的方法:
mysqldump還有一個(gè)選項(xiàng)能夠只導(dǎo)出表的結(jié)構(gòu),而不導(dǎo)出表的內(nèi)容:
-d, –no-data No row information
使用實(shí)例,代碼如下:
mysqldump –opt -d -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables
使用source命令導(dǎo)入數(shù)據(jù):
使用mysql的source命令,可以將mysqldump的導(dǎo)出結(jié)果直接Load到數(shù)據(jù)表里面,使用方法如下:
- > mysql -h 127.0.1.1 -P 3306 -u root -p123456
- mysql> use crazyant;
- mysql> source /home/crazyant.net/mysqldump_crazyant.sql
這樣就完成了導(dǎo)入,如果是全量導(dǎo)入,有時(shí)候有必要使用truncate table的方式先將數(shù)據(jù)清空.
總結(jié):使用MySQL自帶的mysqldump和source命令,能夠很方便的將數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)出,也能夠?qū)?dǎo)出的數(shù)據(jù)導(dǎo)入到庫(kù)中.
新聞熱點(diǎn)
疑難解答
圖片精選