mysql导出表数据sql

在开发和运维过程中,经常需要将MySQL数据库中的表数据导出备份,以便在需要时进行恢复或者迁移。本文将详细介绍如何使用SQL语句导出MySQL数据库中的表数据。
1. 导出单个表数据
1.1 使用SELECT INTO OUTFILE语句导出表数据
SELECT INTO OUTFILE语句可用于将MySQL表的数据导出到一个文本文件中。
语法如下:
SELECT * INTO OUTFILE '文件路径'
FIELDS TERMINATED BY '字段分隔符'
OPTIONALLY ENCLOSED BY '字段包围符'
ESCAPED BY '转义字符'
LINES TERMINATED BY '行终止符'
FROM 表名
参数说明:
文件路径:导出数据的文件名及路径,可以是相对路径或绝对路径。绝对路径应以目录分隔符(如/或\)开头。字段分隔符:每个字段值之间的分隔符,可以使用逗号,、分号;、制表符\t等。字段包围符:如果字段值中含有包含字段分隔符的特殊字符时,字段值会被包围起来。一般常用双引号"或单引号'。转义字符:如果字段包围符或字段分隔符出现在字段值中,使用转义字符对其进行转义。一般使用反斜杠\。行终止符:每行记录的终止符,可以使用换行符\n、回车符\r等。
示例:
SELECT * INTO OUTFILE '/var/tmp/mytable_data.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM mytable;
运行上述SQL语句后,会将表mytable的数据导出到/var/tmp/mytable_data.txt文件中,每个字段值之间使用逗号作为分隔符,字段值如果包含特殊字符会用双引号包围,并且用反斜杠转义特殊字符,每行记录以换行符终止。
1.2 使用mysqldump命令导出表数据
mysqldump是MySQL提供的一个可以将数据库或表数据导出的命令行工具。
语法如下:
mysqldump -u 用户名 -p 密码 数据库名 表名 > 文件名
示例:
mysqldump -u root -p123456 mydb mytable > /var/tmp/mytable_data.sql
运行上述命令后,会将数据库mydb中的表mytable的数据导出到/var/tmp/mytable_data.sql文件中。
2. 导出多个表数据
如果需要导出多个表的数据,可以在SELECT语句中使用UNION操作符将多个表的数据合并,然后通过SELECT INTO OUTFILE语句或mysqldump命令导出。
2.1 使用SELECT INTO OUTFILE语句导出多个表数据
SELECT * INTO OUTFILE '文件路径'
FIELDS TERMINATED BY '字段分隔符'
OPTIONALLY ENCLOSED BY '字段包围符'
ESCAPED BY '转义字符'
LINES TERMINATED BY '行终止符'
FROM 表1
UNION
SELECT * FROM 表2
UNION
SELECT * FROM 表3
...
示例:
SELECT * INTO OUTFILE '/var/tmp/multi_tables_data.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table1
UNION
SELECT * FROM table2;
运行上述SQL语句后,会将table1和table2表的数据合并导出到/var/tmp/multi_tables_data.txt文件中。
2.2 使用mysqldump命令导出多个表数据
mysqldump -u 用户名 -p 密码 数据库名 表名1 表名2 > 文件名
示例:
mysqldump -u root -p123456 mydb table1 table2 > /var/tmp/multi_tables_data.sql
运行上述命令后,会将数据库mydb中的表table1和table2的数据合并导出到/var/tmp/multi_tables_data.sql文件中。
3. 导出全部表数据
3.1 使用SHOW TABLES语句获取数据库所有表名
首先,使用SHOW TABLES语句获取数据库中的所有表名。
语法如下:
SHOW TABLES;
示例:
SHOW TABLES;
运行上述SQL语句后,会列出当前数据库中的所有表名。
3.2 使用SELECT INTO OUTFILE语句导出全部表数据
SELECT * INTO OUTFILE '文件路径'
FIELDS TERMINATED BY '字段分隔符'
OPTIONALLY ENCLOSED BY '字段包围符'
ESCAPED BY '转义字符'
LINES TERMINATED BY '行终止符'
FROM 表1
UNION
SELECT * FROM 表2
UNION
...
示例:
SELECT * INTO OUTFILE '/var/tmp/all_tables_data.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table1
UNION
SELECT * FROM table2;
运行上述SQL语句后,会将所有表的数据合并导出到/var/tmp/all_tables_data.txt文件中。
3.3 使用mysqldump命令导出全部表数据
mysqldump -u 用户名 -p 密码 数据库名 > 文件名
示例:
mysqldump -u root -p123456 mydb > /var/tmp/all_tables_data.sql
运行上述命令后,会将数据库mydb中的所有表的数据导出到/var/tmp/all_tables_data.sql文件中。
总结
本文介绍了如何使用SQL语句和命令行工具将MySQL数据库中的表数据导出备份。根据需求可以选择导出单个表、多个表或全部表的数据,可以使用SELECT INTO OUTFILE语句或mysqldump命令进行导出。根据具体情况选择合适的方式进行操作,以提高数据库备份的效率和可靠性。
极客笔记