zoukankan      html  css  js  c++  java
  • Mysql 客户端查询结果如何保存到本地而不是服务端?

    应用场景:知道某台DB服务器的IP和账户,登录上去查询了10W条记录,需要把这些记录拉到本地做分析


    方法1,远程连接到DB服务器执行OUTFILE命令,文件存储在DB机器上,只有mysql账户的情况下,拿不到本地。文件位置【服务端】

    mysql> select * from b into outfile '/tmp/1.sql';
    Query OK, 1 row affected (0.00 sec)
    
    #保存结果,无表格式,无字段名称信息
    [root@168.21 ~]# cat /tmp/1.sql 
    a
    [root@168.21 ~]# 

    方法2,通过pager命令把输出结果重定向到本地文件。文件位置【本地】

    mysql> pager cat >/tmp/1.sql
    PAGER set to 'cat >/tmp/1.sql'
    mysql> select * from b;
    1 row in set (0.00 sec)
    
    #文件结果,保存结果,保留表格式,不保存SQL命令,有字段名称信息
    [root@168.23 tmp]$ cat 1.sql 
    +------+
    | b    |
    +------+
    | a    |
    +------+
    [root@168.23 tmp]$ 

    方法3,通过-e参数执行SQL命令,文件输出在本地,有字段名称信息,无表格式,无SQL命令。参数带-Ne,结果文件不带字段名称,和outfile导出结果相同。文件位置【本地】

    [root@168.23 tmp]# /usr/local/bin/mysql -uroot -p -h192.168.1.100 test -e "select * from b" > /tmp/2.sql
    Enter password: 
    [root@168.23 tmp]# cat 2.sql 
    b
    a
    [root@168.23 tmp]# 

    方法4,通过tee,把MYSQL的结果保存到外部文件中,保存命令和结果,保留表格式。文件位置【本地】

    mysql> tee /tmp/3.sql
    Logging to file '/tmp/3.sql'
    mysql> select * from b;
    +------+
    | b    |
    +------+
    | a    |
    +------+
    1 row in set (0.00 sec)
    
    mysql> exit
    Bye
    [root@168.23 tmp]# cat 3.sql 
    mysql> select * from b;
    +------+
    | b    |
    +------+
    | a    |
    +------+
    1 row in set (0.00 sec)
    
    mysql> exit
    [root@168.23 tmp]# 

    通过-e参数执行SQL命令带-N参数,可以达到outfile一样的目的,并把文件保存在本地

  • 相关阅读:
    调度器2—cat /proc/<pid>/sched内容分析
    调度器1—相关接口和命令行工具
    Java中的String类
    Java中的数组
    代码访问使用Let's Encrypt证书的网站提示certificate has expired的解决方法
    Linux环境Clion使用Protobuf
    PyTorch Dataloader读取时如何在进程之间传输数据
    6 安装Grafana 展示promethues数据
    5 Prometheus relabel配置
    4 PromQL
  • 原文地址:https://www.cnblogs.com/zuoxingyu/p/6226160.html
Copyright © 2011-2022 走看看