mysql的導出工具有mysqldump和mysqlhotcopy,這兩個都在mysql的安裝目錄下的bin目錄下,但是最新的mysql5.1.57版本中,已找不到mysqlhotcopy了。
mysqldump導出的是系列的sql語句,導入用source命令即可;mysqlhotcopy據說是perl寫的,是簡單的文件拷貝;
mysqldump命令的執行在bin目錄就可以,在myql提示符下是無法執行的。
mysqldump的基本用法:mysqldump -udbuser -p dbname table_name> d:\dbbak.sql,如果沒有表名,表示導出整個數據庫到dbbak.sql中。
參數-d 只導出表結構;參數-t 只導出數據;如果不寫,默認是表機構和數據一起導出;--default-character-set=gbk以gbk的編碼導出文件。
只導出某個字段的命令:例如:一個table有id,name,content字段。那么導出id字段用下面的命令(在mysql的提示符下)
select id from table_name into outfile "d:/test.sql";
導出id和name字段,用下面的命令:select id,name from table_name into outfile "d:/test.sql";
導入命令用::LOAD DATA INFILE 'd:/test.sql' INTO TABLE table_name (id);
例子:使用SELECT...INTO OUTFILE語句來導出example數據庫下employee表的記錄。其中,字段之間用“、”隔開,字符型數據用雙引號括起來。每條記錄以“>”開頭。
mysql>SELECT * FROM example.employee INTO OUTFILE 'F:/backup/tb_chengji.txt' TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
導入 mysql>load data infile "F:/backup/tb_chengji.txt" into table t_general FIELDS TERMINATED BY '\、' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
語法:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS} [TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char'] ]
[LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var,...)] [SET col_name = expr,...]
如果數據被某種符號封閉著,需要指定 ‘ fields enclosed by ’ :
另外還有一些格式上的限制,如 LINES TERMINATED BY 'string' ,指定 file 的換行符,如 ‘\n’ 。
常用的mysql管理工具有SQLyog和Navicat,這兩個軟件的高版本不能識別latin1(西歐 (多語言))下的漢字的顯示,必須是4.1或是以前的低版本的才可以。
另外如果備份數據庫文件有.frm,.myd,.myi文件,必須把這些文件拷貝到data目錄下相應的數據庫目錄就可以了,只能拷貝。
data默認路徑:"C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data\"注意:Application Data文件夾是隱藏的?。。?br />也可以查看
mysql文件目錄
my.ini文件,可以找到類似于
datadir="D:/beeagle/Program Files/MySQL/MySQL Server 5.0/Data/"的字段;
修改這個字段必須停止mysql服務,待修改完成后再開啟服務。