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 庫名 <
檔名