分享、学习、提高
2010/12/23 23:14
文章作者:Enjoy 转载请注明原文链接。
在《高性能Mysql》第二版中看到,SQL文件和界定符文件在备份、还原时的耗费时间对比。
方式 文件大小 导出时间 还原时间
SQL dump 727M 102s 600s
Delimited dump 669M 86s 301s

看起来界定符文件的导出比sql文件快了近20%,还原速度快了一倍。

记录和总结一下语法:

备份:SELECT INTO OUTFILE

SELECT * FROM hx_9enjoy INTO OUTFILE '/tmp/9enjoy.txt'

默认使用tab分割字段,记录使用\n分割。可以自定义三个参数。

SELECT * FROM hx_9enjoy INTO OUTFILE '/tmp/9enjoy_hx.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
即使用,分割字段,双引号限定字段内容,\n分割记录。

还可以指定某些条件的记录输出:

SELECT * FROM hx_9enjoy WHERE id < 100 INTO OUTFILE '/tmp/9enjoy_100.txt'

还原:LOAD DATA INFILE

默认情况:
LOAD DATA INFILE '/tmp/9enjoy.txt' INTO TABLE hx_9enjoy

如果有指定界定符,则加上界定符的说明:
LOAD DATA INFILE '/tmp/9enjoy.txt' INTO TABLE hx_9enjoy FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

如果db是GBK或utf-8等编码,需要在还原时指定CHARACTER SET参数,否则还原的数据是乱码。
如:load data infile '/tmp/9enjoy.txt' INTO TABLE hx_9enjoy CHARACTER SET gbk;


注意事项
1.mysql必须要有权限访问生成文件的那个目录
2.由于安全方面的原因,不能覆盖已存在的文件,不管这个文件的权限是怎么分配的。
3.不能直接导出一个压缩文件。
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写