Mysql导出文本文件


使用mysqldump命令导出文本文件
mysqldump -u root -pPassword -T 目标目录 dbname [tables] [option];

其中:

  • Password 参数表示root用户的密码,密码紧挨着-p选项。
  • -T:只有指定了-T参数,才可以导出纯文本文件。
  • 目标目录:是指导出的文本文件的路径。
  • dbname参数表示数据库的名称。
  • tables参数表示要导出的表的名称。如果不指定,则导出数据库dbname中所有的表。

option为可选参数选项,这些选项需要结合-T选项使用。
option常见的取值如下:

  • --fields-terminated-by=字符串。设置字符串为各个字段之间的分隔符,可以为单个或多个字符。默认值为制表符“\t”。
  • --fields-enclosed-by=字符。设置一个字符来括住各个字段的值,这个是每个字段都会用这个字符包裹。
  • --fields-optionally-enclosed-by=字符:设置一个来括住字符类型的值,字符将括住CHAR、VARCHAR和TEXT等字符型字段。
  • --fields-escaped-by=字符:设置转义字符,只能为单个字符。默认值为“\”。
  • --lines-terminated-by=字符串:设置每行数据结尾的字符,可以为单个或多个字符。默认值为“\n”。
  • --no-create-db sql文件里面不导出创建database语句,但是还是会有.sql文件。
  • --no-create-info sql文件里面不导出创建table语句,但是还是会有.sql文件。

示例1:使用mysqldump语句使用root账户,密码7NS5EWr4Cb4Y0wJij7mm导出example数据库下的employee表的记录。其中,字段之间用0x01隔开(即ASCII=0x01的字符),字符型数据用“|”括起来,行之间用\r\n(即CRLF)隔开。文件保存到目录:/data/exportdata/
SQL命令代码如下:

mysqldump example employee -uroot -p7NS5EWr4Cb4Y0wJij7mm -T /data/exportdata/ --fields-terminated-by=0x01 --fields-optionally-enclosed-by='|' --lines-terminated-by="\r\n"

示例2:使用mysqldump语句使用root账户,密码7NS5EWr4Cb4Y0wJij7mm导出example数据库下的employee表的记录。其中,字段之间用0x01隔开(即ASCII=0x01的字符),行之间用\r\n(即CRLF)隔开。文件保存到目录:/data/exportdata/
SQL命令代码如下:

mysqldump example employee -uroot -p7NS5EWr4Cb4Y0wJij7mm -T /data/exportdata/ --fields-terminated-by=0x01 --lines-terminated-by="\r\n"

注意1: 如果出现“mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement when executing 'SELECT INTO OUTFILE'”错误,需要修改my.cnf(或my.ini)配置文件,并重新启动数据库服务。
在my.cnf中的[mysqld]节添加或修改一个项目secure_file_priv=
本项含义:

  1. null表示不允许导出;
  2. 空表示允许导出,而且不限制目标目录;
  3. 一个目录(如:/data/exportdata),表示只允许导出文件到此目录;

查看目前配置,可以使用SQL语句:show global variables like '%secure%';

一个示例:

MySQL导出数据字典带有主键 mysql导出文本_字段

注意2: 如果出现“Can't create/write to file”错误,请修改目录权限,修改为777权限即可,本示例对应的命令如下:
chmod 777 /data/exportdata/