mysql中數據庫或數據的導入導出我們用到命令有mysqldump與source命令了,它們分別有自己的優點與作用,下面我來介紹利用mysqldump導出數據與利用source導入備份的數據。
mysqldump是mysql自帶的一個數據導入導出工具,其官方注釋為:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] –databases db_name …
shell> mysqldump [options] –all-databases
使用mysqldump命令將整個數據庫導出
代碼如下 復制代碼 mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables > crazyant.sql其中-h後面是主機名,-P後面是端口號,-u後面是用戶名,-p後面是密碼;crazyant是要導出的數據庫名;
由於導出過程中出現了這個錯誤:
mysqldump: Got error: 1044: Access denied for user 'root'@'127.0.0.1' to database 'crazyant' when using LOCK TABLE
所以在最後面,我加上了–skip-lock-tables這個選項,就沒有錯誤了。
mysqldump命令導出時設定不需要導出的表
有時候一個數據庫中有一些表我們不想導出,這時候可以使用mysqldump的–ignore-table命令來設定過濾的表,該參數的用法如下:
–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.,
–ignore-table=database.table.
可以看出其用法:
• –ignore-table=database.table
•每次只能指定一個表,如果要指定多個表,該選項需要寫多次
使用實例:
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命令只導出1個表或指定表的方法
也可以在mysqldump的database後面跟上要1個要導出的表,來只導出單個表。
代碼如下 復制代碼mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 –skip-lock-tables crazyant table_a >dump_table_a.sql
也可以寫上多個要導出的表,以空格分開它們即可:
代碼如下 復制代碼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”的方式寫出導出數據庫的表即可。
使用mysqldump命令只導出表結構的方法
mysqldump還有一個選項能夠只導出表的結構,而不導出表的內容:
-d, –no-data No row information
使用實例:
代碼如下 復制代碼mysqldump –opt -d -h 127.0.0.1 -P 3306 -u root -p123456 crazyant –skip-lock-tables
使用source命令導入數據
使用mysql的source命令,可以將mysqldump的導出結果直接Load到數據表裡面;
使用方法如下:
代碼如下 復制代碼> mysql -h 127.0.1.1 -P 3306 -u root -p123456
mysql> use crazyant;
mysql> source /home/crazyant.net/mysqldump_crazyant.sql
這樣就完成了導入,如果是全量導入,有時候有必要使用truncate table的方式先將數據清空;
總結
使用MySQL自帶的mysqldump和source命令,能夠很方便的將數據庫的數據導出,也能夠將導出的數據導入到庫中;