众所周知mysql的数据导出方法,可以使用到mysqldump这个命令,其中如果导出指定格式的数据困扰了我。

比如到处数据用逗号(‘),竖线(|)隔开的数据。很多人会说使用用

  • mysql -uUser -pPwd dbName -e “$sql” 进行导出。
    其中$sql使用 SELECT * FROM `TABLENAME` WHERE xxx INTO OUTFILE “指定文件路劲” FIELDS TERMINATED BY ”|

这种往往很多会报没有权限之类的莫名其妙的错误。

错误一

View Code ERROR
ERROR 1045 (28000) at line 1: Access denied for user 'qinghua'@'localhost' (using password: YES)

错误二

View Code ERROR
ERROR 1 (HY000) at line 1: Can't create/write to file '/home/martin/outfile' (Errcode: 13)

错误一是由于普通用户没有执行权限,错误二是由于没有权限穿件文件”aa”。
正确的做应该是

View Code SHELL
mysql -uqinghua -p123456 qinghua --e "select * from qinghua.user where 1 into outfile 'outfile' FIELDS TERMINATED BY'|'"

这样它穿件的文件会出现在mysql datadir目录对应的数据库文件夹内。

如果想把文件创建到指定目录内。那你一定得赋予改目录mysql写入权限。

一般的做法是

mkdir -p /home/martin/outdata;
chown mysql.mysql /home/martin/outdata;

sudo chmod 777 /home/martin/outdata;

View Code SHELL
mysql -uqinghua -p123456 qinghua --e "select * from qinghua.user where 1 into outfile '/home/martin/outdata/outfile' FIELDS TERMINATED BY'|'"

mysqldump参数介绍:

  • –w 设定导出的条件。
  • –no-create-db 导出时不到出穿件数据库。
  • –no-create-info 不创建表结构。
  • –xml 导出xml格式文件。
  • –skip-add-drop-table 不创建删除表结构语句。

mysql数据导入一般使用 mysql -uUser -pPwd dbName < xxx.sql,或者使用source进行导入。

参考地址:

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

http://dev.mysql.com/doc/refman/5.1/zh/replication.html 生成二进制日志,进行双机热备。

错误:

mysql output

mysql output

结果:

mysql result

mysql result

出处: 马丁博客http://www.blags.org/

本文链接地址: http://www.blags.org/mysql-data-import-and-export-methods/

原创文章,转载请注明出处,否则视为侵权。