图像化导向的MySQL管理工具比比皆是,但真正能够提速而且并非“图有其表”的管理工具,可能没有哪一个比得上MySQL客户端驱动的命令行更有效了。不过,执行一般查询需要大量键盘输入工作,而且确定您目前正在登录的数据库以及快速监测数据库服务器的性能都会变得很单调乏味。
改变客户端提示符
如果每运行一次show tables来提醒自己目前所选择的是哪个数据库就能得到一块钱的话,估计现在我都成百万富翁了。事实上,当我们不停的定期在IDE、shell提示符和MySQL客户端提示符之间切换的时候,很容易就会迷失方向,不知道自己在哪里了。要从根本上消除这个问题,可以使用以下prompt命令来更改MySQL的提示符:
mysql>prompt mysql (d)>
执行完该命令后,目前所选择的数据库就会在提示符中显示出来,如下:
mysql (corporate)>
此外,我们也很容易跟丢我们所登录的数据库服务器,更不用说正在使用的帐户了。要解决这个问题,通过使用u 和h 选项来更改提示符设置:
mysql>prompt mysql (u@h)>
执行命令的结果如下:
mysql (root@www.ctocio.com.cn)>
想要永久的保存这种更改设置,可以将以下的命令添加到.my.cnf 文件中:
[mysql] prompt=mysql d>
数据库、用户和主机选项只是很多可选选项的一个很小的部分而已,您可以参阅MySQL的说明文档以获取更多信息。
使用shell Alias(别名)来执行经常使用的MySQL命令
假设您的新web应用正逐步步入应用阶段,每个小时都有新用户注册。就像新股上市一样,您和您的同事需要经常关注注册用户的数量。但是,就为了执行一个简单的计数查询就需要不断的登录退出MySQL,显然不是很划算。如果您登录到服务器,您可以创建一个shell别名来实现登录到MySQL服务器、选择适当的数据库和执行计数命令整个过程:
%>alias usrcount="mysql -u appadmin -p myapplication-e "select count(id) from users""
在本例中,您想要使用appadmin用户帐户登录到本地MySQL服务器,选择myapplication数据库,然后利用SELECT查询来执行计数查询。而执行以上命令后,当您想要确定系统中有多少用户时,只需要执行以下的命令,并输入appadmin的用户密码就可以了:
%>usrcountEnterpassword:
+-------------+
|count(id)|
+-------------+
|348|
+-------------+
想要永久的保存这个别名,可以将其添加保存到.bashrc文件或类似的shell配置文件中。
以垂直格式表现查询结果
当表包含了很多列时,要在一个shell窗口中显示SELECT查询的结果就相当困难了。通过在查询中附加一个G转换就可以很容易解决这一不便之处:
mysql>SELECT * from users WHERE id=1G
执行这一查询会使输出结果表现如下:
mysql test>select * from users where id=1G*************************** 1. row *********
id: 1
name: Nancy
email: Nancy@example.com
telephone: 861088888888
city: Beijing
1 row in set (0.00 sec)
从查询结果创建一个CSV文件
如果您能够很专业地使用数据库,那么很可能会有同事让您将数据从数据库中转存到一个Excel文件,以便进行进一步的分析。我们可以通过修改一个SELECT查询来执行所有的CSV格式化步骤,然后将数据放置到文本文件中。您需要做的只是要指出结束的字段和界限。例如,使用下面的命令可以将一个名为users的表转存到名为users.csv的CSV文件中:
mysql>SELECT*FROMusersINTOOUTFILE'/home/jason/users.csv'
FIELDSTERMINATEDBY' '->LINESTERMINATEDBY' ';
插入批量数据
假设您在编写一个用来销售各种各样产品的电子商务应用程序。比较明智的做法是先对这些产品进行分类,因此,您可能需要使用一个表(本例中命名为categories)来管理这些分类名称:
mysqltest>createtablecategories(->idintegernotnullauto_increment,
->namevarchar(35)notnull,
->primarykey(id));
当您在编写程序的过程中,您已经添加了一个包含分类列表的文本文件(categories.txt)。这个文件类似以下形式:
糖果
水果
咖啡
茶
蔬菜
接下来就要将这些分类添加到categories 表中。您可以手动添加,但是这很耗费时间而且容易出错,比较明智的做法是使用MySQL的LOAD DATA INFILE命令:
mysql>LOADDATAINFILE'/home/nancy/categories.txt'INTOTABLEcategories->LINESTERMINATEDBY'
'
如果您的输入文件的每一行都包含了多个项目,那您可以通过使用制表符来分隔这些项目并把每个项目插入到一个独立的列中,使用FIELDS TERMINATED BY ' ':
mysql>LOADDATAINFILE'/home/jason/categories.txt'INTOTABLEcategories->FIELDSTERMINATEDBY' '
LINESTERMINATEDBY'
'
禁用烦人的错误提示音
您可能很讨厌MySQL客户端发出的错误提示音。如果您实在无法适应这种哔哔声,您可以从客户端内部执行一个查询来断绝这些午夜惊铃。虽然这样做对于效率并没有什么关系,但您还是可以把这个功能禁用掉。暂时禁用提示声,可以在登录到服务器的同时调用 --no-beep。
%>mysql -u root -p --no-beep
要想永久禁用这个功能,则将no-beep添加到.my.cnf 文件的[client]部分。
总之,希望本文所汇编的MySQL客户端技巧能够帮助您更有效的利用这个强大的工具。