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文件夹是隐藏的!!!
也可以查看
mysql文件目录
my.ini文件,可以找到类似于
datadir="D:/beeagle/Program Files/MySQL/MySQL Server 5.0/Data/"的字段;
修改这个字段必须停止mysql服务,待修改完成后再开启服务。