<?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[shell操作mysql]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 18 Oct 2010 08:28:19 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp; 在shell开发中，很多时候我们需要操作mysql数据库（比如：查询数据、导出数据等），但是我们又无法进入mysql命令行的环境，就需要在shell环境中模拟mysql的环境，使用mysql相关命令，本文总结几种shell操作mysql的方法，供大家参考。<br/><br/>方案1<br/>&nbsp;&nbsp;<br/>view plaincopy to clipboardprint?<br/>01.mysql -uuser -ppasswd -e&quot;insert LogTable values(...)&quot;&nbsp;&nbsp;<br/> mysql -uuser -ppasswd -e&quot;insert LogTable values(...)&quot; <br/>优点：语句简单<br/>缺点：支持的sql相对简单<br/> <br/>方案2<br/>准备一个sql脚本，名字为update.sql，例如：<br/>view plaincopy to clipboardprint?<br/>01.CREATE TABLE `user` (&nbsp;&nbsp; <br/>02.&nbsp;&nbsp;`id` varchar(36) NOT NULL COMMENT &#039;主键&#039;,&nbsp;&nbsp; <br/>03.&nbsp;&nbsp;`username` varchar(50) NOT NULL COMMENT &#039;用户名&#039;,&nbsp;&nbsp; <br/>04.&nbsp;&nbsp;`password` varchar(50) NOT NULL COMMENT &#039;用户密码&#039;,&nbsp;&nbsp; <br/>05.&nbsp;&nbsp;`createdate` date NOT NULL COMMENT &#039;创建时间&#039;,&nbsp;&nbsp; <br/>06.&nbsp;&nbsp;`age` int(11) NOT NULL COMMENT &#039;年龄&#039;,&nbsp;&nbsp; <br/>07.&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)&nbsp;&nbsp; <br/>08.) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;用户信息表&#039;;&nbsp;&nbsp; <br/>09.DROP TABLE IF EXISTS `visit_log`;&nbsp;&nbsp; <br/>10.CREATE TABLE `visit_log` (&nbsp;&nbsp; <br/>11.&nbsp;&nbsp;`id` varchar(36) character set utf8 NOT NULL,&nbsp;&nbsp; <br/>12.&nbsp;&nbsp;`type` int(11) NOT NULL,&nbsp;&nbsp; <br/>13.&nbsp;&nbsp;`content` text character set utf8 NOT NULL,&nbsp;&nbsp; <br/>14.&nbsp;&nbsp;`createdate` date NOT NULL,&nbsp;&nbsp; <br/>15.&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)&nbsp;&nbsp; <br/>16.) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;访问日志&#039;;&nbsp;&nbsp;<br/>CREATE TABLE `user` (<br/>&nbsp;&nbsp;`id` varchar(36) NOT NULL COMMENT &#039;主键&#039;,<br/>&nbsp;&nbsp;`username` varchar(50) NOT NULL COMMENT &#039;用户名&#039;,<br/>&nbsp;&nbsp;`password` varchar(50) NOT NULL COMMENT &#039;用户密码&#039;,<br/>&nbsp;&nbsp;`createdate` date NOT NULL COMMENT &#039;创建时间&#039;,<br/>&nbsp;&nbsp;`age` int(11) NOT NULL COMMENT &#039;年龄&#039;,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)<br/>) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;用户信息表&#039;;<br/>DROP TABLE IF EXISTS `visit_log`;<br/>CREATE TABLE `visit_log` (<br/>&nbsp;&nbsp;`id` varchar(36) character set utf8 NOT NULL,<br/>&nbsp;&nbsp;`type` int(11) NOT NULL,<br/>&nbsp;&nbsp;`content` text character set utf8 NOT NULL,<br/>&nbsp;&nbsp;`createdate` date NOT NULL,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)<br/>) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;访问日志&#039;; <br/> 新建一个update_mysql.sh，内容如下：<br/>view plaincopy to clipboardprint?<br/>01.use chbdb;&nbsp;&nbsp; <br/>02.source update.sql&nbsp;&nbsp;<br/>use chbdb;<br/>source update.sql <br/> <br/>然后执行如下命令：<br/>view plaincopy to clipboardprint?<br/>01.cat update_mysql.sh &#124; mysql --user=root -ppassword&nbsp;&nbsp;<br/>cat update_mysql.sh &#124; mysql --user=root -ppassword <br/>优点：支持复杂的sql脚本<br/>缺点：<br/>1&gt; 需要两个文件：update.sql和update_mysql.sh<br/>2&gt; 一旦中间出错，之后脚本就不会执行，例如：<br/>如果第一张表已经存在，则会报出如下异常：<br/>ERROR 1050 (42S01) at line 1 in file: &#039;update.sql&#039;: Table &#039;user&#039; already exists<br/>然后脚本退出，第二张表也就无法创建。<br/>方案3<br/>&nbsp;&nbsp;&nbsp;&nbsp;新建一个shell脚本，格式如下：<br/>view plaincopy to clipboardprint?<br/>01.#!/bin/bash&nbsp;&nbsp; <br/>02.mysql -u* -h* -p* &lt;&lt;EOF&nbsp;&nbsp; <br/>03.&nbsp;&nbsp;&nbsp;&nbsp;Your SQL script.&nbsp;&nbsp; <br/>04.EOF&nbsp;&nbsp;<br/>#!/bin/bash<br/>mysql -u* -h* -p* &lt;&lt;EOF<br/>&nbsp;&nbsp;&nbsp;&nbsp;Your SQL script.<br/>EOF <br/>例如：<br/>view plaincopy to clipboardprint?<br/>01.#!/bin/bash&nbsp;&nbsp; <br/>02.mysql -uroot&nbsp;&nbsp;-ppassword &lt;&lt;EOF&nbsp;&nbsp; <br/>03.&nbsp;&nbsp; use chbdb;&nbsp;&nbsp; <br/>04.&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE user (&nbsp;&nbsp; <br/>05.&nbsp;&nbsp;id varchar(36) NOT NULL COMMENT &#039;主键&#039;,&nbsp;&nbsp; <br/>06.&nbsp;&nbsp;username varchar(50) NOT NULL COMMENT &#039;用户名&#039;,&nbsp;&nbsp; <br/>07.&nbsp;&nbsp;password varchar(50) NOT NULL COMMENT &#039;用户密码&#039;,&nbsp;&nbsp; <br/>08.&nbsp;&nbsp;createdate date NOT NULL COMMENT &#039;创建时间&#039;,&nbsp;&nbsp; <br/>09.&nbsp;&nbsp;age int(11) NOT NULL COMMENT &#039;年龄&#039;,&nbsp;&nbsp; <br/>10.&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)&nbsp;&nbsp; <br/>11.) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;用户信息表&#039;;&nbsp;&nbsp;<br/>#!/bin/bash<br/>mysql -uroot&nbsp;&nbsp;-ppassword &lt;&lt;EOF<br/>&nbsp;&nbsp; use chbdb;<br/>&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE user (<br/>&nbsp;&nbsp;id varchar(36) NOT NULL COMMENT &#039;主键&#039;,<br/>&nbsp;&nbsp;username varchar(50) NOT NULL COMMENT &#039;用户名&#039;,<br/>&nbsp;&nbsp;password varchar(50) NOT NULL COMMENT &#039;用户密码&#039;,<br/>&nbsp;&nbsp;createdate date NOT NULL COMMENT &#039;创建时间&#039;,<br/>&nbsp;&nbsp;age int(11) NOT NULL COMMENT &#039;年龄&#039;,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`id`)<br/>) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=&#039;用户信息表&#039;; <br/>优点：<br/>1&gt;支持复杂的sql脚本<br/>2&gt;无需其它额外文件<br/>缺点：<br/>1&gt; 表名、字段不能使用单引号，需要修改原有sql语句<br/>2&gt; 一旦中间出错，之后脚本就不会执行，例如：<br/>如果第一张表已经存在，则会报出如下异常：<br/>ERROR 1050 (42S01) at line 1 in file: &#039;update.sql&#039;: Table &#039;user&#039; already exists<br/>然后脚本退出，第二张表也就无法创建。<br/>方案4<br/>准备一个sql脚本，如update.sql，然后执行如下命令：<br/>view plaincopy to clipboardprint?<br/>01.mysql -uroot -ppassword &lt; update.sql&nbsp;&nbsp;<br/>mysql -uroot -ppassword &lt; update.sql <br/>优点：支持复杂的sql脚本<br/>缺点：<br/>1&gt; 一旦中间出错，之后脚本就不会执行，例如：<br/>如果第一张表已经存在，则会报出如下异常：<br/>ERROR 1050 (42S01) at line 1 in file: &#039;update.sql&#039;: Table &#039;user&#039; already exists<br/>然后脚本退出，第二张表也就无法创建。<br/> <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;大家知道在mysql命令行中使用source命令，即使中间出错，后续脚本也会继续执行，但是如上几种方式，均无法解决该问题，如果大家有好的建议，请回复，谢谢!<br/><br/>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/hbcui1984/archive/2010/01/03/5125387.aspx
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] shell操作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>