1. 程式人生 > >MySQL mysqldump 匯入/匯出 結構&資料&儲存過程&函式&事件&觸發器

MySQL mysqldump 匯入/匯出 結構&資料&儲存過程&函式&事件&觸發器

一、使用mysqldump匯出/匯入sql資料檔案

二、使用infile/outfile匯入/匯出txt/csv資料檔案

———————————————-庫操作———————————————-
1.①匯出一個庫結構

mysqldump -d dbname -u root -p > xxx.sql

②匯出多個庫結構

mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql

2.①匯出一個庫資料

mysqldump -t dbname -u root -p > xxx.sql

②匯出多個庫資料

mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql

3.①匯出一個庫結構以及資料

mysqldump dbname1 -u root -p > xxx.sql

②匯出多個庫結構以及資料

mysqldump -B dbname1 dbname2 -u root -p > xxx.sql


———————————————-表操作———————————————-
4.①匯出一個表結構

mysqldump -d dbname1 tablename1 -u root -p > xxx.sql

②匯出多個表結構

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

5.①匯出一個表資料

mysqldump -t dbname1 tablename1 -u root -p > xxx.sql

②匯出多個表資料

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

6.①匯出一個表結構以及資料

mysqldump dbname1 tablename1 -u root -p > xxx.sql

②匯出多個表結構以及資料

mysqldump -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql


————————————–儲存過程&函式操作————————————-
7.只匯出儲存過程和函式(不匯出結構和資料,要同時匯出結構的話,需要同時使用-d)

mysqldump -R -ndt dbname1 -u root -p > xxx.sql


———————————————-事件操作———————————————-
8.只匯出事件

mysqldump -E -ndt dbname1 -u root -p > xxx.sql


—————————————–觸發器操作——————————————–
9.不匯出觸發器(觸發器是預設匯出的–triggers,使用–skip-triggers遮蔽匯出觸發器)

mysqldump --skip-triggers dbname1 -u root -p > xxx.sql


————————————————————————————————
10.匯入

source xxx.sql


————————————————————————————————
總結一下:

-d 結構(--no-data:不匯出任何資料,只匯出資料庫表結構)

-t 資料(--no-create-info:只匯出資料,而不新增CREATE TABLE 語句)

-n (--no-create-db:只匯出資料,而不新增CREATE DATABASE 語句)

-R (--routines:匯出儲存過程以及自定義函式)

-E (--events:匯出事件)

--triggers (預設匯出觸發器,使用--skip-triggers遮蔽匯出)

-B (--databases:匯出資料庫列表,單個庫時可省略)

--tables 表列表(單個表時可省略)

①同時匯出結構以及資料時可同時省略-d和-t
②同時 不 匯出結構和資料可使用-ntd
③只匯出儲存過程和函式可使用-R -ntd
④匯出所有(結構&資料&儲存過程&函式&事件&觸發器)使用-R -E(相當於①,省略了-d -t;觸發器預設匯出)
⑤只匯出結構&函式&事件&觸發器使用 -R -E -d

PS:如果可以使用相關工具,比如官方的MySQL Workbench,則匯入匯出都是極為方便的,如下圖。(當然為了安全性,一般情況下都是遮蔽對外操作許可權,所以需要使用命令的情況更多些)

————————————————————————————————

下面為使用infile/outfile匯入/匯出txt/csv資料檔案操作

10.①首先使用語句看一下可以匯入/匯出的路徑在哪裡

show variables like '%secure%';

表示匯入/匯出只能存放在E:/下面。

②如果不按照對應路徑進行操作的話,將報如下錯誤:

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

③如果還有許可權問題,請修改my.ini將secure_file_priv設定到有許可權的路徑下

11.對csv/txt資料匯入和匯出

①匯出csv資料

select *
into outfile 'E:/table1_data.csv'
character set gb2312
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n'
from table1;

②匯入csv資料

load data infile 'E:/table1_data.csv'
into table table1 character set gb2312
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n';

③匯出txt資料

預設使用空格作為分隔符,需要其它引數請參考上面的csv操作

select *
into outfile 'E:/table1_data.txt'
from table1;

④匯入txt資料

load data infile 'E:/table1_data.txt'
into table table1;

以上。