:
:
:
mysql的客户端命令行工具,有很多方便使用者的特性,某些方面甚至可以说比oracle的更加人性化。当然从整体来说,还 是sqlplus更加方便些,这么说或许是我对sqlplus更加熟悉吧。这里记录下mysql命令行几个比较常用的特性。
1.使用\g按行垂直显示结果
如果一行很长,需要这行显示的话,看起结果来就非常的难受。在sql语句
或者命令后使用\g而不是分号结尾,可以将每一行的值垂直输出。这个可能也是大家对于mysql最熟悉的区别于其他数据库工具的一个特性了。
*************************** 1. row ***************************
id: 1
check_day: 2008-06-26
db_name: tbdb1
arc_size: 137
arc_num: 166
per_second: 1.6
avg_time: 8.7
2.使用pager设置显示方式
如果select出来的结果集超过几个屏幕,那么前面的结果一晃而过无
法看到。使用pager可以设置调用os的more或者less等显示查询结果,和在os中使用more或者less查看大文件的效果一样。
使用
more
pager set to 'more'
mysql> \p more
pager set to 'more'
使用less
pager set to 'less'
mysql> \p less
pager set to 'less'
还原成stdout
pager set to stdout
3.使用tee保存运行结果到文件
这个类似于sqlplus的spool功能,可以将命令行中的结果保
存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。
logging to file 'output.txt'
或者
mysql> \t output.txt
logging to file 'output.txt'
mysql> notee
outfile disabled.
或者
mysql> \t
outfile disabled.
4.执行os命令
linux
mysql> \! uname
linux
5.执行sql文件
----------------
| current_date() |
----------------
| 2008-06-28 |
----------------
1 row in set (0.00 sec)
或者
mysql> \. test.sql
----------------
| current_date() |
----------------
| 2008-06-28 |
----------------
1 row in set (0.00 sec)
其他还有一些功能,可以通过help或者?获得mysql命令行支持的一些命令。
1.以html格式输出结果
使用mysql客户端的参数–html或者-t,则所有sql的查询结果会
自动生成为html的table代码
$ mysql -uroot --html
welcome to the mysql monitor. commands end with ; or \g.
your mysql connection id is 3286
server version: 5.1.24-rc-log mysql community server (gpl)
type 'help;' or '\h' for help. type '\c' to clear the buffer.
mysql> select * from test.test;
i |
---|
1 |
2 |
2 rows in set (0.00 sec)
2.以xml格式输出结果
跟上面差不多,使用–xml或者-x选项,可以将结果输出为xml格式
$ mysql -uroot --xml
welcome to the mysql monitor. commands end with ; or \g.
your mysql connection id is 3287
server version: 5.1.24-rc-log mysql community server (gpl)
type 'help;' or '\h' for help. type '\c' to clear the buffer.
mysql> select * from test.test;xmlns:xsi="">
|
1
|
2
2 rows in set (0.00 sec)
3.修改命令提示符
使用mysql的–prompt=选项,或者进入mysql命令行环境后使用
prompt命令,都可以修改提示符
mysql> prompt \u@\d>
prompt set to '\u@\d>'
root@(none)>use mysql
reading table information for completion of table and column names
you can turn off this feature to get a quicker startup with -a
database changed
root@mysql>
其中\u表示当前连接的用户,\d表示当前连接的数据库,其他更多的可选项 可以参考man mysql
通过/etc/my.cnf配置文件的[mysql]部分,可以设置 mysql命令行的一些运行参数。例如:
[mysql]
prompt=\\u@\\d \\r:\\m:\\s>
pager='less -s'
tee='/tmp/mysql.log'
通过prompt设置显示用户名,当前数据库和当前时间,注意在配置文件里最好使用双斜杠:
root@poster 10:26:35>
通过pager设置使用less来显示查询结果,-s表示截断超过屏幕宽度的行,一行太长mysql的显示格式就显得很乱,如果要看完整的行,建议 使用\g将行垂直输出。当然,你也可以添加更多less的参数来控制输出。
tee则将mysql执行的所有输出保存到一个日志文件中,即使使用less -s截断了超长行,在日志中还是会记录整个的结果,另外,前面通过prompt设置了当前时间显示,这样也便于在日志文件中查看每次操作的时间。由于 tee的结果是附加到文件中的,日志文件需要定期清除。