mysql命令行到垂直输出

时间:2013-06-12 12:04:35

标签: mysql command-line

我想用垂直输出获取mysql查询的结果。 使用--vertical(或G)时我的问题是加星号的行。

    $mysql -N -e 'select filed1, field2 from db.tlb\G'
    *************************** 1. row ***************************
    value1_field1
    value1_field2
    *************************** 2. row ***************************
    value2_field1
    value2_field2
    ...

是否有一个选项我没有找到摆脱*** [...] x行。排[...] ***?

目前,我正在使用 egrep -v'^ \ *。* \ * $',但我确信存在更好的解决方案。

3 个答案:

答案 0 :(得分:0)

我不确定这是一个好的解决方案,但如果显式使用egrep很烦人,你可以定义一个shell函数来启动mysql所需的< EM>寻呼机。假设您正在使用 bash (或兼容):

# define a shell function to launch mysql with the required _pager_
sh$ mysql() { `which mysql` $* --pager="egrep -v '^\*.*\*$'" ; }

[ ... ]

# launch mysql "as usual" (in reality, this is the shell function that is invoked)
sh$ mysql -u user -p -h mysql-host mydb
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 67
Server version: 5.1.49-3 (Debian)

-- Use mysql normally -- but the "egrep pager" will remove the "star lines"
mysql> select * from T\G
col1: w
col2: x
col3: 0.4
1 row in set (0.00 sec)

正如我之前所说,这不是一个完美的解决方案,因为egrep将盲目地从输出中删除任何“星线” - 不仅是来自 ego 的那个({{1} }})命令。

答案 1 :(得分:0)

尝试这个(但我无法想象为什么你需要这样的输出)

mysql -N -B -e 'select * from db' mysql | tr "\t" "\n"

答案 2 :(得分:0)

第一个选项

将改变MySQL寻呼机,如下所示:

<强> test.sh

#!/usr/bin/env bash

# Some Basic Configuration
db="homestead"
dbuser="homestead"
dbhost="127.0.0.1"
# Executes the MySQL command using the basic configuration
# This also sets the MySql Pager to less -Sin to enable
# it also removes all lines starting with "*"
mysql -h $dbhost -u $dbuser -p --pager="grep -Ev '(^\*.*$)|(^$)' | less -Sin" $db

<强>用法

首先编辑配置变量:

$ nano ./test.sh 

其次运行脚本

$ bash ./test.sh

第二选项

在您已经进入MySQL CLI之后更改寻呼机

$ mysql -u root -p -h 127.0.0.1 somedatabase
enter password:
mysql> pager grep -Ev '(^\*.*$)|(^$)' | less -Sin