免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 936 | 回复: 0
打印 上一主题 下一主题

MySQL客户端命令行应用技巧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-28 19:06 |只看该作者 |倒序浏览
MySQL客户端命令行应用技巧

     图像化导向的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的用户密码就可以了:
 %>usrcount
  Enter password:
  +-------------+
  | count(id) |
  +-------------+
  | 348 |
  +-------------+
  想要永久的保存这个别名,可以将其添加保存到.bashrc文件或类似的shell配置文件中。
  以垂直格式表现查询结果
  当表包含了很多列时,要在一个shell窗口中显示SELECT查询的结果就相当困难了。通过在查询中附加一个\G转换就可以很容易解决这一不便之处:
  mysql>SELECT * from users WHERE id=1\G
  执行这一查询会使输出结果表现如下:
mysql test>select * from users where id=1\G*************************** 1. row *********       id: 1     name: Nancy    email: Nancy@example.comtelephone: 861088888888     city: Beijing1 row in set (0.00 sec)
  从查询结果创建一个CSV文件
  如果您能够很专业地使用数据库,那么很可能会有同事让您将数据从数据库中转存到一个Excel文件,以便进行进一步的分析。我们可以通过修改一个SELECT查询来执行所有的CSV格式化步骤,然后将数据放置到文本文件中。您需要做的只是要指出结束的字段和界限。例如,使用下面的命令可以将一个名为users的表转存到名为users.csv的CSV文件中:
mysql>SELECT * FROM users INTO OUTFILE '/home/jason/users.csv'
  FIELDS TERMINATED BY '\t\' ->LINES TERMINATED BY '\n';
  插入批量数据
  假设您在编写一个用来销售各种各样产品的电子商务应用程序。比较明智的做法是先对这些产品进行分类,因此,您可能需要使用一个表(本例中命名为categories)来管理这些分类名称:
  mysql test>create table categories (
  ->id integer not null auto_increment,
  ->name varchar(35) not null,
  ->primary key(id));
  当您在编写程序的过程中,您已经添加了一个包含分类列表的文本文件(categories.txt)。这个文件类似以下形式:
  糖果
  水果
  咖啡
  茶
  蔬菜
  接下来就要将这些分类添加到categories 表中。您可以手动添加,但是这很耗费时间而且容易出错,比较明智的做法是使用MySQL的LOAD DATA INFILE命令:
  mysql>LOAD DATA INFILE '/home/nancy/categories.txt'
  INTO TABLE categories ->LINES TERMINATED BY '\n'
  如果您的输入文件的每一行都包含了多个项目,那您可以通过使用制表符来分隔这些项目并把每个项目插入到一个独立的列中,使用FIELDS TERMINATED BY '\t':
  mysql>LOAD DATA INFILE '/home/jason/categories.txt'
  INTO TABLE categories ->FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
  禁用烦人的错误提示音
  您可能很讨厌MySQL客户端发出的错误提示音。如果您实在无法适应这种哔哔声,您可以从客户端内部执行一个查询来断绝这些午夜惊铃。虽然这样做对于效率并没有什么关系,但您还是可以把这个功能禁用掉。暂时禁用提示声,可以在登录到服务器的同时调用 --no-beep。
  %>mysql -u root -p --no-beep
  要想永久禁用这个功能,则将no-beep添加到.my.cnf 文件的[client]部分。
  总之,希望本文所汇编的MySQL客户端技巧能够帮助您更有效的利用这个强大的工具。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36549/showart_486033.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP