1. 程式人生 > >mysql匯入匯出資料

mysql匯入匯出資料

備份資料庫: 
進入cmd 
匯出所有資料庫:輸入:mysqldump -u [資料庫使用者名稱] -p -A>[備份檔案的儲存路徑] 

匯出資料和資料結構:輸入:mysqldump -u [資料庫使用者名稱] -p [要備份的資料庫名稱]>[備份檔案的儲存路徑] 
例子:mysqldump -u root -p test>d:\test.sql 
注意:此備份只備份資料和資料結構,沒有備份儲存過程和觸發器 

只匯出資料不匯出資料結構:輸入:mysqldump -u [資料庫使用者名稱] -p -t [要備份的資料庫名稱]>[備份檔案的儲存路徑] 

匯出資料庫中的Events 
輸入:mysqldump -u [資料庫使用者名稱] -p -E [資料庫使用者名稱]>[備份檔案的儲存路徑] 


匯出資料庫中的儲存過程和函式 
mysqldump -u [資料庫使用者名稱] -p -R [資料庫使用者名稱]>[備份檔案的儲存路徑] 

匯入資料庫
mysql -u root -p<[備份檔案的儲存路徑] 疑問 

恢復備份檔案: 
進入MYSQL Command Line Client 
先建立資料庫:create database test 注:test是建立資料庫的名稱 
再切換到當前資料庫:use test 
再輸入:\. d:/test.sql 或 souce d:/test.sql 

1. 概述 
MySQL資料庫的匯入,有兩種方法: 
1) 先匯出資料庫SQL指令碼,再匯入; 
2) 直接拷貝資料庫目錄和檔案。 


在不同作業系統或MySQL版本情況下,直接拷貝檔案的方法可能會有不相容的情況發生。 
所以一般推薦用SQL指令碼形式匯入。下面分別介紹兩種方法。 

2. 方法一 SQL指令碼形式 
操作步驟如下: 
2.1. 匯出SQL指令碼 
在原資料庫伺服器上,可以用phpMyAdmin工具,或者mysqldump(mysqldump命令位於mysql/bin/目錄中)命令列,匯出SQL指令碼。 
2.1.1 用phpMyAdmin工具 
匯出選項中,選擇匯出“結構”和“資料”,不要新增“Drop DATABASE”和“Drop TABLE”選項。 
選中“另存為檔案”選項,如果資料比較多,可以選中“gzipped”選項。 

將匯出的SQL檔案儲存下來。 

2.1.2 用mysqldump命令列 
命令格式 
mysqldump -u使用者名稱 -p 資料庫名 > 資料庫名.sql 
範例: 
mysqldump -uroot -p abc > abc.sql 
(匯出資料庫abc到abc.sql檔案) 

提示輸入密碼時,輸入該資料庫使用者名稱的密碼。 

2.2. 建立空的資料庫 
通過主控介面/控制面板,建立一個數據庫。假設資料庫名為abc,資料庫全權使用者為abc_f。 

2.3. 將SQL指令碼匯入執行 
同樣是兩種方法,一種用phpMyAdmin(mysql資料庫管理)工具,或者mysql命令列。 
2.3.1 用phpMyAdmin工具 
從控制面板,選擇建立的空資料庫,點“管理”,進入管理工具頁面。 
在"SQL"選單中,瀏覽選擇剛才匯出的SQL檔案,點選“執行”以上載並執行。 

注意:phpMyAdmin對上載的檔案大小有限制,php本身對上載檔案大小也有限制,如果原始sql檔案 
比較大,可以先用gzip對它進行壓縮,對於sql檔案這樣的文字檔案,可獲得1:5或更高的壓縮率。 
gzip使用方法: 
# gzip xxxxx.sql 
得到 
xxxxx.sql.gz檔案。 

2.3.2 用mysql命令列 
命令格式 
mysql -u使用者名稱 -p 資料庫名 < 資料庫名.sql 
範例: 
mysql -uabc_f -p abc < abc.sql 
(匯入資料庫abc從abc.sql檔案) 

提示輸入密碼時,輸入該資料庫使用者名稱的密碼。 

3 方法二 直接拷貝 
如果資料庫比較大,可以考慮用直接拷貝的方法,但不同版本和作業系統之間可能不相容,要慎用。 
3.1 準備原始檔案 
用tar打包為一個檔案 

3.2 建立空資料庫 

3.3 解壓 
在臨時目錄中解壓,如: 
cd /tmp 
tar zxf mydb.tar.gz 

3.4 拷貝 
將解壓後的資料庫檔案拷貝到相關目錄 
cd mydb/ 
cp * /var/lib/mysql/mydb/ 

對於FreeBSD: 
cp * /var/db/mysql/mydb/ 

3.5 許可權設定 
將拷貝過去的檔案的屬主改為mysql:mysql,許可權改為660 
chown mysql:mysql /var/lib/mysql/mydb/* 

chmod 660 /var/lib/mysql/mydb/*

幾個常用用例:

1.匯出整個資料庫
mysqldump -u
使用者名稱 -p 資料庫名 > 匯出的檔名mysqldump -u root -p dataname >dataname.sql這個時候會提示要你輸入root使用者名稱的密碼,輸入密碼後dataname資料庫就成功備份在mysql/bin/目錄中.

2.匯出一個表
mysqldump -u
使用者名稱 -p 資料庫名表名> 匯出的檔名mysqldump -u root -p dataname users> dataname_users.sql

3.匯出一個數據庫結構mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc>d:/wcnc_db.sql
-d
沒有資料 –add-drop-table 在每個create語句之前增加一個drop table

4.匯入資料庫常用source 命令進入mysql資料庫控制檯,mysql -u root -p

mysql>use 資料庫

然後使用source命令,後面引數為指令碼檔案(如這裡用到的.sql
mysql>source d:/wcnc_db.sql

mysqldump支援下列選項:
–add-locks
在每個表匯出之前增加LOCK TABLES並且之後UNLOCK TABLE(為了使得更快地插入到MySQL)

–add-drop-table
在每個create語句之前增加一個drop table

–allow-keywords
允許建立是關鍵詞的列名字。這由表名字首於每個列名做到。

-c,–complete-insert
使用完整的insert語句(用列名字)

-C, –compress
如果客戶和伺服器均支援壓縮,壓縮兩者間所有的資訊。

–delayed
INSERT DELAYED命令插入行。

-e,–extended-insert
使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)

-#,–debug[=option_string]
跟蹤程式的使用(為了除錯)

–help
顯示一條幫助訊息並且退出。

–fields-terminated-by=…

–fields-enclosed-by=…

–fields-optionally-enclosed-by=…

–fields-escaped-by=…

–fields-terminated-by=…

這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。
LOAD DATA INFILE
語法。

-F, –flush-logs
在開始匯出前,洗掉在MySQL伺服器中的日誌檔案。

-f, –force,
即使我們在一個表匯出期間得到一個SQL錯誤,繼續。

-h, –host=..
從命名的主機上的MySQL伺服器匯出資料。預設主機是localhost

-l,–lock-tables.
為開始匯出鎖定所有表。

-t,–no-create-info
不寫入表建立資訊(CREATE TABLE語句)

-d, –no-data
不寫入表的任何行資訊。如果你只想得到一個表的結構的匯出,這是很有用的!

–opt
–quick –add-drop-table –add-locks –extended-insert –lock-tables應該給你為讀入一個MySQL伺服器的儘可能最快的匯出。

-pyour_pass,–password[=your_pass]
與伺服器連線時使用的口令。如果你不指定“=your_pass”部分,mysqldump需要來自終端的口令。

-P port_num,–port=port_num
與一臺主機連線時使用的TCP/IP埠號。(這用於連線到localhost以外的主機,因為它使用 Unix套接字。)

-q, –quick
不緩衝查詢,直接匯出至stdout;使用mysql_use_result()做它。

-S/path/to/socket, –socket=/path/to/socket
localhost連線時(它是預設主機)使用的套接字檔案。

-T,–tab=path-to-some-directory
對於每個給定的表,建立一個table_name.sql檔案,它包含SQL CREATE 命令,和一個table_name.txt檔案,它包含資料。注意:這隻有在mysqldump執行在mysqld守護程序執行的同一臺機器上的時候才工作。.txt檔案的格式根據–fields-xxx –lines–xxx選項來定。

-u user_name,–user=user_name
與伺服器連線時,MySQL使用的使用者名稱。預設值是你的Unix登入名。

-O var=option,–set-variable var=option
設定一個變數的值。可能的變數被列在下面。

-v, –verbose
冗長模式。打印出程式所做的更多的資訊。

-V, –version
列印版本資訊並且退出。

-w,–where=’where-condition’
只匯出被選擇了的記錄;注意引號是強制的!
“–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″

最常見的mysqldump使用可能製作整個資料庫的一個備份:
mysqldump –opt database > backup-file.sql

但是它對用來自於一個數據庫的資訊充實另外一個MySQL資料庫也是有用的:
mysqldump –opt database | mysql –host=remote-host -C database
由於mysqldump匯出的是完整的SQL語句,所以用mysql客戶程式很容易就能把資料匯入了:

shell>mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql
庫名 < 檔名