【MySQL】将表导出CSV(可以使用excel打开)

1、准备工作

查看数据库:

show databases;

切换数据库:

use 数据库名;

查看表名字

show tables;

2、单个表导出

需要替换导出csv文件目录和表名

sql 复制代码
SELECT *
INTO OUTFILE '目录/文件名.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM 表名;

如果表太大,excel无法打开,可以显示导出的行数,例如10000行

sql 复制代码
SELECT *
INTO OUTFILE '目录/文件名.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM 表名
LIMIT 10000;

3、导出全部表

当表太多的时候,可以使用下面的方法,一次性导出全部表;

需要替换数据库名。

sql 复制代码
DELIMITER //
 
CREATE PROCEDURE ExportAllTablesToCSV()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tName VARCHAR(255);
    DECLARE tCursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = '数据库名';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 
    OPEN tCursor;
        read_loop: LOOP
            FETCH tCursor INTO tName;
            IF done THEN
                LEAVE read_loop;
            END IF;
 
            SET @stmt = CONCAT('SELECT * FROM ', tName, ' INTO OUTFILE \'', tName, '.csv\' FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\'');
            PREPARE s1 FROM @stmt;
            EXECUTE s1;
            DEALLOCATE PREPARE s1;
        END LOOP;
    CLOSE tCursor;
END //
 
DELIMITER ;
 
CALL ExportAllTablesToCSV();

4、修复

如果在导出时,报错:

Table '表名' is marked as crashed and should be repaired

检查表:

check table 表名;

修复表:

repair table 表名;
相关推荐
weisian15116 分钟前
Mysql--运维篇--备份和恢复(逻辑备份,mysqldump,物理备份,热备份,温备份,冷备份,二进制文件备份和恢复等)
运维·mysql
夏炎正好眠19 分钟前
mysql概述
数据库·mysql·oracle
三天不学习1 小时前
如何将 sqlserver 数据迁移到 mysql
数据库·mysql·sqlserver
wrjwww1 小时前
【MySQL学习笔记】MySQL的索引
笔记·学习·mysql
柚几哥哥3 小时前
从 MySQL 到 ClickHouse 的迁移与优化——支持上亿级数据量的复杂检索
数据库·mysql·clickhouse
菜萝卜子3 小时前
[mysql] mariabackup增量备份数据库
数据库·mysql
dengjiayue7 小时前
MySQL 与 Redis 的数据一致性问题
数据库·redis·mysql
风月歌8 小时前
java项目之在线文档管理系统源码(springboot+mysql+vue+文档)
java·vue.js·spring boot·mysql·mybatis·源码
在线打码9 小时前
针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】
数据库·python·websocket·mysql·安全·flask
繁川10 小时前
MySQL不使用子查询的原因
android·数据库·mysql