mysqldump:Database Backup程式
有3種方式來調用mysqldump:
mysqldump [options] db_name [tables]mysqldump [options] ---database DB1 [DB2 DB3...]mysqldump [options] --all--database
如果沒有指定任何錶或使用了---database或--all--database選項,則轉儲整個資料庫。
備份一個資料庫.
mysqldump -uroot -p123456 mysql > mysql_backup.sql
這裡備份了database mysql的結構和資料,產生的sql檔案不會有建立database mysql的語句。
可以用一個命令備份mysql,test多個資料庫:
mysqldump -u root -p123456 --database mysql test > my_databases.sql
產生的sql檔案有建立database mysql和test的語句
備份所有資料庫:
mysqldump -u root -p123456 --all-databases > all_databases.sql
匯出mysql這個資料庫的結構
mysqldump -u root -p123456 -d --add-drop-table mysql > mysql_define.sql
匯出一個資料所有資料並用gz壓縮
mysqldump -u root -p123456 mysql | gzip > mysql.sql.gz
可以這樣將轉儲檔案讀回到伺服器:
mysql db_name < backup-file.sqlmysql -e "source /path-to--backup/backup-file.sql" db_name
或者從gz檔案中還原
gunzip -f < mysql.sql.gz | mysql -u root -p123456 test
更多參考 http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqldump
SELECT...INTO OUTFILE
SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個檔案中,該檔案被建立到伺服器主機上。
SELECT...INTO OUTFILE是LOAD DATA INFILE的補語;用於語句的exort_options部分的文法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語句同時使用。
在下面的例子中,產生一個檔案,各值用逗號隔開。這種格式可以被許多程式使用
SELECT * INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'FROM mysql.user;
將mysql資料庫的user表的資料匯出到/tmp/result.txt
SELECT...INTO OUTFILE只能匯出資料,不能匯出結構,一般和load data聯合使用。
更多參考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#select
LOAD DATA INFILE
LOAD DATA INFILE語句用於高速地從一個文字檔中讀取行,並裝入一個表中。檔案名稱必須為一個文字字串。
由character_set_database系統變數指示的字元集被用於解釋檔案中的資訊。
LOAD DATA LOCAL INFILE '/tmp/result.txt' INTO TABLE test.userFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
把/tmp/result.txt的資料匯入到test資料庫的user表。
更多參考 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data