mysql 导出格式化数据_MySQL客户端输出格式化神奇现象

博客揭示了一个关于MySQL客户端的奇怪现象:当使用命令行输出`show global status like 'Uptime'`时,输出带有格式化符号,但将输出重定向到文件后,格式化消失。通过strace工具,发现MySQL客户端似乎能根据输出目标调整格式化策略。尽管原因未知,这展示了MySQL客户端在不同输出渠道的智能适应性。
摘要由CSDN通过智能技术生成

MySQL客户端输出格式化神奇现象,以前没注意到,在此分享一下:

$ mysql -uroot -e “show global status like ‘Uptime’”

+—————+———+

| Variable_name | Value |

+—————+———+

| Uptime | 2174838 |

+—————+———+

$ mysql -uroot -e “show global status like ‘Uptime’” > /tmp/test

[mysql@dev81 ~]$ cat /tmp/test

Variable_name Value

Uptime 2174855

发现奇怪的地方了吗?格式化的那些符号都不见了!同样的命令,重定向到文件之后,输出变了!

+—————+———+

| Variable_name | Value |

+—————+———+

| Uptime | 2174838 |

+—————+———+

变成了

Variable_name Value

Uptime 2174855

想了很长时间,没想明白。问了下曲山,他二话不说开始用strace,马上就发现了奥妙所在。

$ strace mysql -uroot -e “show global status like ‘Uptime’”

……

……

write(1, “+—————+———+\n”, 28+—————+———+

) = 28

write(1, “| Variable_name | Value |\n”, 28| Variable_name | Value |

) = 28

write(1, “+—————+———+\n”, 28+—————+———+

) = 28

write(1, “| Uptime | 2175430 | \n”, 29| Uptime | 2175430 |

) = 29

write(1, “+—————+———+\n”, 28+—————+———+

) = 28

poll([{fd=3, events=POLLIN|POLLPRI}], 1, 0) = 0

write(3, “\1\0\0\0\1″, 5) = 5

shutdown(3, 2 /* send and receive */) = 0

close(3) = 0

exit_group(0) = ?

Process 24577 detached

$ strace mysql -uroot -e “show global status like ‘Uptime’” > /tmp/test

……

……

write(1, “Variable_name\tValue\nUptime\t21755″…, 35) = 35

exit_group(0) = ?

Process 24581 detached

针对不同的输出渠道,MySQL的客户端似乎有方法可以捕捉到并采取不同的格式化输出策略。不过MySQL为什么要这样做的原因还是不知道,估计只有天知道了。0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值