平時對數據庫的操作基本是對數據表以及表中的數據操作,對數據庫的備份和還原用到的較少,今天在此總結下,當作是一個自我學習的過程。
1,數據庫的備份
用mysqldump命令,原因:該工具在多個存儲引擎上使用,此外其備份的數據庫文件只要進行簡單的修改便可在sql server和sybase上使用。
格式:mysqldump -h localhost(填數據所在的主機名) -u root(用戶名) -p db_name(要備份的數據庫名)>path(要備份的地址)
例如:打開dos窗輸入 mysqldump -u root -p db_name>E:/11.sql;
如果只想單獨備份數據庫中的某個表就在數據庫名後加表名就好
例如備份db_name數據庫中的table1表:mysqldump -u root -p db_nametable1>E:/11.sql;
如果想備份多個數據庫,則加入關鍵字--databases 如下:mysqldump -u root -p--databases db_name1db_name2>E:/db.sql; 實現了對db_name1和數據庫db_name2的備份。
此外需要特別注意的一點時,不加--databases對數據庫進行備份後,如過被備份的數據庫直接被刪除後,無法直接用備份進行恢復,因為 “mysqldump -u root -p db_name>E:/db.sql”只備份了db_name數據庫下的所有表,文件中不包括創建數據庫的CREATE DATABASE語句,因此如果把db_name刪了使用db.sql還原時會出現:“No database selected”的錯誤信息,因此在還原前必須先創建db_name數據庫,並用use db_name選中。或者在備份時,直接用mysqldump -u root -p --databases db_name>db.sql,這樣不僅備份了所用數據庫下的表結構,而且包括了創建數據庫的語句。
2,數據的還原
如果沒有登錄mysql數據庫,mysql -h localhost -u root -p db_name(數據庫名)<filename.sql(備份文件名)
如果已經登錄了mysql裡面則通過source語句還原:先在mysql中選擇要還原的數據庫,即use db_name; 然後執行source filename.sql(文件路徑名)
3,表的導入導出
mysql關鍵的操作是對數據操作,而數據是存儲在表中,因此對數據的直接操作是通過表的導入導出實現的,表的導入與導出有多種方法下面我們就總結一下:
一、已登錄mysql,用select...into outfile導出文件,用load data infile導入文件
格式:use db_name 進入某個數據庫
select * from table_name into outfile "filepath.txt"; 將表table_name導出filepath路徑下的文件中
load data infile "filepath.txt" into table table_name; 將filepath.txt的數據導入到表table_name中;
上面這兩條語句都有一些可選項[options]來規定導入、導出時數據的格式,如:
select * from table_name into outfile "filepath.txt"
fields
terminated by ','
enclosed by ' \" '
escaped by ' \' '
lines
terminated by '\r\n'
staring by '>'
fields下的terminated by ','表示導出的數據字段之間用,相隔,enclosed by ' \" ' 表示每個字段被雙引號包圍,escaped by ' \' '表示將轉義字符定義為單引號。lines下的terminated by '\r\n'表示每行記錄以回車換行符結尾,staring by '>'表示每一行以‘ > ’字符開始。例子如下:
不加option的導出數據格式為
1Tale of AAA Dickes28 1995novel 112EmmaT Jane lura40 1993drama 22
加了如上option的導出數據格式為
> "1","Tale of AAA",...
> "2","EmmaT",...
二 不登錄mysql
用mysqldump命令導出文件,感覺跟備份數據庫相似,命令如下:
mysqldump -T path dbname table_name -u root -p
path為導出的路徑,dbname為數據庫名 table_name為數據庫中的表名。
也可像select ... into outfile 一樣加option可選項如下:
mysqldump -T path dbname table_name -u root -p --fields-terminated-by=,--fields-enclosed-by=\"--fields-escaped-by=?--lines-terminated-by=\r\n
用mysql命令導出數據庫
mysql -u root -p --execute="select 語句" dbname>filename.txt
同樣可以用mysql導出html格式的數據,使用--html選項即可
mysql -u root -p --html --execute="select 語句" dbname>filename.html
mysql -u root -p --xml --execute="select 語句" dbname>filename.xml
用mysqlimport導入文本文件
mysqlimport -u root -p db_name filename.txt
也可以帶有可選參數如mysqldump的參數。
mysqlimport -u root -p db_name filename.txt --fields-terminated-by=,--fields-enclosed-by=\"--fields-escaped-by=?--lines-terminated-by=\r\n