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

打印 上一主题 下一主题

主题 1853|帖子 1853|积分 5569

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、准备工作

查看数据库:
  1. show databases;
复制代码
切换数据库:
  1. use 数据库名;
复制代码
查看表名字
  1. show tables;
复制代码
2、单个表导出

必要替换导出csv文件目录和表名
  1. SELECT *
  2. INTO OUTFILE '目录/文件名.csv'
  3. FIELDS TERMINATED BY ','
  4. ENCLOSED BY '"'
  5. LINES TERMINATED BY '\n'
  6. FROM 表名;
复制代码
如果表太大,excel无法打开,可以显示导出的行数,例如10000行
  1. SELECT *
  2. INTO OUTFILE '目录/文件名.csv'
  3. FIELDS TERMINATED BY ','
  4. ENCLOSED BY '"'
  5. LINES TERMINATED BY '\n'
  6. FROM 表名
  7. LIMIT 10000;
复制代码
3、导出全部表

当表太多的时候,可以使用下面的方法,一次性导出全部表;
必要替换数据库名。
  1. DELIMITER //
  2. CREATE PROCEDURE ExportAllTablesToCSV()
  3. BEGIN
  4.     DECLARE done INT DEFAULT FALSE;
  5.     DECLARE tName VARCHAR(255);
  6.     DECLARE tCursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = '数据库名';
  7.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  8.     OPEN tCursor;
  9.         read_loop: LOOP
  10.             FETCH tCursor INTO tName;
  11.             IF done THEN
  12.                 LEAVE read_loop;
  13.             END IF;
  14.             SET @stmt = CONCAT('SELECT * FROM ', tName, ' INTO OUTFILE \'', tName, '.csv\' FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\'');
  15.             PREPARE s1 FROM @stmt;
  16.             EXECUTE s1;
  17.             DEALLOCATE PREPARE s1;
  18.         END LOOP;
  19.     CLOSE tCursor;
  20. END //
  21. DELIMITER ;
  22. CALL ExportAllTablesToCSV();
复制代码
4、修复

如果在导出时,报错:
  1. Table '表名' is marked as crashed and should be repaired
复制代码
检查表:
  1. check table 表名;
复制代码
修复表:
  1. repair table 表名;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表