• 你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!


    那本文就跟大家介绍我常用的两种方式,如下:

    方式一:tee

    tee的功能是把你与MySQL-Server之间的交互记录都记录到你指定的文件中去。

    看下的案例:

    Step1:按如下的方式同MySQL交互

    1. // tee命令执行之后,你与MySQL之间的所有交流都会被记录到指定的文件中。
    2. mysql> tee /root/res.txt
    3. Logging to file '/root/res.txt'
    4. mysql> show tables;
    5. +----------------+
    6. | Tables_in_test |
    7. +----------------+
    8. | runoob_tbl     |
    9. +----------------+
    10. 1 row in set (0.00 sec)
    11. mysql> select * from runoob_tbl;
    12. +-----------+-----------------------+-----------------------+-----------------+
    13. | runoob_id | runoob_title          | runoob_author         | submission_date |
    14. +-----------+-----------------------+-----------------------+-----------------+
    15. |         3 | 欢迎**搜索:        | 风一样的程序员        | 2021-11-18      |
    16. +-----------+-----------------------+-----------------------+-----------------+
    17. 1 row in set (0.00 sec)

    Step2:退出连接,然后去查看机器上的/etc/root/res.txt

    方式二:mysql_use_result

    第二种方式如下,在登录MySQL时指定好用哪个数据库和要执行的SQL语句,并将SQL的执行结果一股脑重定向到你指定的文件中。

    还是上面的例子,对应的命令如下:

    1. mysql -h 127.0.0.1 
    2.     -P ${端口}  
    3.     -p ${密码}   
    4.     -u ${用户名}  
    5.     -D ${数据库名}   
    6.     -e"select * from runoob_tbl;" > ./info_100w &     

    执行完之后,查看结果文件:


    这时候有个风险:如果你的SQL要捞出的数据量动辄几十几百G,或者TB级别,且依然使用上面的方式拉数据的话,就极有可能打爆内存。因为默认如上的情况中(使用的是mysql_store_result模式),MySQL是把你查到的数据全部加载进内存,再一股脑返回给你。

    解决的方式:添加--quick参数

    1. mysql -h 127.0.0.1 
    2.     -P ${端口}  
    3.     -p ${密码}   
    4.     -u ${用户名}  
    5.     -D ${数据库名} 
    6.       --quick
    7.     -e"select * from runoob_tbl;" > ./info_100w &     

    使用这个参数后会开启mysql_use_result模式,MySQL每读到一行数据,就会立刻将这行数据返回给客户端,虽然交互的次数多了点,但是直接解决掉客户端内存消耗问题。

    学废了没?

  • 相关阅读:
    词法作用域&改变词法作用域
    R数据分析:孟德尔随机化实操
    打印数组的所有子集
    如何搭建属于自己的查题公众号?
    【项目实战】自主实现 HTTP 项目(五)——返回静态网页
    神经网络深度学习(一)损失函数
    docker容器中没有vi编辑器的解决办法
    【MATLAB教程案例17】基于NSGAII多目标优化算法的matlab仿真及应用
    基于单片机的空气质量实时监测系统(论文+源码)
    【C++入门到精通】右值引用 | 完美转发 C++11 [ C++入门 ]
  • 原文地址:https://blog.csdn.net/weixin_72753070/article/details/126117987