<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[使用tee记录mysql client 所有的操作,十个节省时间的MySQL命令。  ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Sat, 23 Jun 2012 08:07:59 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	Demo：<textarea name="code" class="C" rows="15" cols="100">tee /tmp/jack.txt</textarea><br/>查看：<br/>tail -f /tmp/jack.txt<br/><br/>一：tee<br/>方法一、配置文件<br/>在服务器上的/etc/my.cnf中的[client]加入 <br/>tee =/tmp/client_mysql.log即可.<br/><br/> <br/>方法二、命令行<br/>1.mysql -uroot --tee=/tmp/client_mysql.log <br/> <br/>2.这个类似于sqlplus的spool功能，可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件，则结果会附加到文件中。<br/>mysql&gt; tee client_mysql.log <br/>Logging to file &#039;client_mysql.log &#039;<br/>或者<br/>mysql&gt; &#92;T client_mysql.log <br/>Logging to file &#039;client_mysql.log &#039;<br/><br/>mysql&gt; notee<br/>Outfile disabled.<br/>或者<br/>mysql&gt; &#92;t<br/>Outfile disabled.<br/><br/>二：mysql pager、tee、prompt说明：<br/><br/>当表中数据行很多，一页看不完时，可以使用pager [cmd]更改mysql的查询输出，cmd为linux的标准命令，如：<br/>mysql&gt; pager less;<br/>mysql&gt; select * from test.dept;<br/>查询输出都是通过管道传给less命令，可以实现分页浏览<br/>mysql&gt; nopager;即可回到标准输出stdout<br/>还可使用如下语句将输出发送到文件中：<br/>mysql&gt; pager cat&gt;/home/pw/osq.txt;<br/><br/>less说明：<br/>退出：“：q”<br/>下一页：“F”<br/>上一页：“B”<br/>查询<br/><br/>向前搜索<br/>/ - 使用一个模式进行搜索，并定位到下一个匹配的文本<br/>n - 向前查找下一个匹配的文本<br/>N - 向后查找前一个匹配的文本<br/>向后搜索<br/>? - 使用模式进行搜索，并定位到前一个匹配的文本<br/>n - 向后查找下一个匹配的文本<br/>N - 向前查找前一个匹配的文本<br/><br/>tee说明<br/>mysql&gt;tee filename<br/>可以将之后在mysql的所有输入输出操作记录到filename中。<br/><br/>prompt说明<br/>用于修改mysql提示符<br/>[mysql] <br/>prompt=(<br/>来自：http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html<br/><br/>&nbsp;&nbsp;虽然有许多基于GUI的MySQL客户端存在，如著名的phpMyAdmin和SQLYog，但我一直喜欢原生的MySQL命令行客户端，的确，在未熟悉这些命令行接口(CLI)之前，我们需要花一些时间来熟悉它们，特别是你平时不是经常在具有强大的CLI环境的操作系统下工作时，但只要经过一些练习，你就可以通过CLI管理用户，浏览你的数据库和执行其它任务，其快感是其它人体会不到的。<br/>　　在这篇文章中，我将会介绍我在工作中积累起来的一些MySQL命令行客户端技巧，不管你尝试其中一个还是所有技巧，我敢保证你一定会节省大量的时间。<br/>　　顺便提一下，MySQL命令行客户端适应所有操作系统，当然包括Windows，但因为Windows原生CLI环境让人畏惧，因此推荐Windows用户下载并安装Console，它是Windows命令行的一个替代解决方案，提供了更强大的功能，如方便的文本选择，多标签窗口等。<br/>　　1、登录过程自动化<br/>　　正确配置的MySQL服务器需要你提供用户名和密码进行身份验证，通常情况下，我们可以直接在mysql命令后加上用户名，出于安全考虑，密码就不跟上了，回车执行时，命令提示符会提醒你输入密码。<br/>%&gt;mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. ...<br/>　　通过这一个小小的改进，一年可以少输入几千次用户名，累计起来在登录时间上可以节省几个小时，创建一个.my.cnf文件，将其放在你的home目录下，如果是Windows，文件名则为my.ini，并且要放在MySQL安装目录下，在这个文件中，添加下面的代码，请使用你的登录信息替换占位符。<br/>[client] host = your_mysql_server user = your_username password = your_password<br/>　　一定要正确设置这个文件的权限，防止敏感数据被偷窥。<br/>　　2、自动切换数据库<br/>　　登录客户端后，你需要切换到目标数据库，通常我们会使用下面这个命令来切换数据库：<br/>mysql&gt;use wjgilmore_dev;<br/>　　如果你想登录后自动切换到目标数据库，可以在上一步介绍的文件中添加下面的命令，注意位置也要放在[client]小节：<br/>database = your_database_name<br/><br/>　　3、从脚本发送命令<br/>　　设计一个新数据库时，我喜欢使用MySQL Workbench(MySQL工作台)设计模式和关系，它是一个特别强大的工具，你可以在图形界面下管理你的模式，然后同步到MySQL服务器，或将SQL命令导出到一个文件，方便以后再导入到MySQL。<br/>　　如果你喜欢手写代码，如创建大量的存储过程，或执行一个很长的连接，你可以将SQL保存为一个文件，然后将这个文件传递给客户端执行，如：<br/>%&gt;mysql &lt; schema.sql<br/>　　当然你需要指定连接字符串，或象前面一样通过配置文件来指定。<br/>　　4、垂直显示结果<br/>　　即使是很简单的表模式，也会包含几列字段，例如下面的表由11个字段组成，当我执行一个全结构查询时，输入结果如下：<br/>mysql&gt; select * from accounts where username = &#039;wjgilmore&#039;; <br/>+----+-----------+------------------+------------------------------ ----+----------+-----------+------------+-----------+-------------- --------------------+---------------------+---------------------+ &#124; id &#124; username &#124; email &#124; password &#124; zip_code &#124; latitude &#124; longitude &#124; confirmed &#124; recovery &#124; created_on &#124; last_login &#124; +----+-----------+------------------+------------------------------- ---+----------+-----------+------------+-----------+----------------- -----------------+---------------------+---------------------+ &#124; 7 &#124; wjgilmore &#124; wj@wjgilmore.com &#124; 2b877b4b825b48a9a0950dd5bd1f264d &#124; 43201 &#124; 39.984577 &#124; -83.018692 &#124; 1 &#124; 8bnnwtqlt2289q2yp81tuge82fty501h &#124; 2010-09-16 14:48:41 &#124; 2010-10-27 15:49:44 &#124; +----+-----------+------------------+---------------------------------- +----------+-----------+------------+-----------+---------------------- ------------+---------------------+---------------------+<br/>　　显然我们不能接受，也无法阅读这种显示结果，使用G命令将上面丑陋的显示结果转换为垂直型。<br/>mysql&gt; select * from accounts where username = &#039;wjgilmore&#039;G *************************** 1. row *************************** id: 7 username: wjgilmore email: wj@wjgilmore.com password: 2b877b4b825b48a9a0950dd5bd1f264d zip_code: 43201 latitude: 39.984577 longitude: -83.018692 confirmed: 1 recovery: 8bnnwtqlt2289q2yp81tuge82fty501h created_on: 2010-09-16 14:48:41 last_login: 2010-10-27 15:49:44<br/>　　这样看起来就更舒服一点。<br/><br/>　　5、启用Tab键自动完成功能<br/>　　重复输入表名和字段名无疑是很乏味的，给mysql客户端传递一个--auto-rehash参数，或是在my.ini文件中添加下面的命令来启用Tab键自动完成功能。<br/>[mysql] auto-rehash<br/>　　6、改变提示符<br/>　　我不止一次想查看或修改被告知表不存在的模式，遇到这种情况我常常会很恐惧，大多数时候我登错数据库，导致错误地删除不该删除的表，通过修改MySQL客户端提示符，让它显示当前操作的数据库名字，从而避免误操作，为了让mysql客户端具备这种交互性，登录后执行下面的命令即可：<br/>mysql&gt;prompt [d]&gt; [dev_wjgilmore_com]&gt;<br/>　　你可能希望永久保持这种效果，简单，只需要将下面的命令添加到你的配置文件中即可：<br/>prompt = [d]&gt;<br/>　　当然不仅限于提示数据库名字，还可以显示当前日期和时间，主机名和用户名，请阅读MySQL手册了解更全面的信息。<br/>　　7、使用安全更新预防灾难<br/>　　前面我也提到，当表被意外删除时可能会引起恐惧，我相信不止我一个人有类似的经历，除了不小心执行了DROP TABLE外，更让人崩溃的是忽略WHERE子句的UPDATE命令，例如，假设你想使用下面的命令修改用户的用户名：<br/>mysql&gt;UPDATE users set User = &#039;wjgilmore&#039; WHERE User = &#039;wjgilmore-temp&#039;;<br/>　　但当你冲忙地想出去吃饭时，可能忘记敲入后面的WHERE子句<br/>mysql&gt;UPDATE users set User = &#039;wjgilmore&#039;;<br/>　　一旦你按下回车，后果就很严重，users表中所有用户的用户名全部被修改为wjgilmore了，为了避免这种低级，但又会带来灾难性后果的错误，请在配置文件中添加下面的命令：<br/>safe-updates<br/><br/>　　8、使用命令文档<br/>　　许多用户都知道mysql客户端的内置文档，输入help命令时，它会显示一长串的命令列表。<br/>mysql&gt;help <br/>... List of all MySQL commands: Note that all text commands must be first on line and end with &#039;;&#039; ? (?) Synonym for `help&#039;. clear (c) Clear the current input statement. connect (r) Reconnect to the server. Optional arguments are db and host. delimiter (d) Set statement delimiter. ...<br/>　　如果你不知道DESCRIBE命令如何使用，只需要输入<br/>mysql&gt;help describe;<br/>Name: &#039;DESCRIBE&#039; Description: Syntax: &#123;DESCRIBE &#124; DESC&#125; tbl_name [col_name &#124; wild] DESCRIBE provides information about the columns in a table. It is a shortcut for SHOW COLUMNS FROM. These statements also display information for views. (See [HELP SHOW COLUMNS].) ...<br/>　　9、使用Pager<br/>　　有时你可能想查看表的某一行数据，但在屏幕上往往会显示满屏的数据，除了使用LIMIT子句外，开启客户端pager，设置你的系统分页实用程序：<br/>mysql&gt;pager more PAGER set to &#039;more&#039;<br/>　　如果要禁用pager，执行nopager命令即可。<br/>　　10、将输出内容转储到文件<br/>　　你可能偶尔需要将SQL执行结果输出到一个文本文件，可以使用SELECT INTO OUTFILE command命令达到目的，或直接在mysql客户端中启用tee命令，并制定输出文件实现同样的功能，如：<br/>mysql&gt;tee sales_report.txt<br/>　　小结<br/>　　不管你是挑选其中一部分还是尝试这10个技巧，它们都会为你节省大量的时间和精力，并会减轻你的痛苦，如果你知道其它MySQL命令行技巧，不妨在评论中一起分享一下吧!<br/>以上十个方法来自：http://www.searchdatabase.com.cn/showcontent_43297.htm
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 使用tee记录mysql client 所有的操作,十个节省时间的MySQL命令。  ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>