shell 下执行mysql 命令

From: http://blog.csdn.net/beginning1126/article/details/8590014

方案1

  1. mysql -uuser -ppasswd -e  
 
优点:语句简单
缺点:支持的sql相对简单
 

方案2

准备一个sql脚本,名字为update.sql,例如:
  1. CREATE TABLE `user` (  
  2. ) NOT NULL COMMENT ,  
  3. ) NOT NULL COMMENT ,  
  4. ) NOT NULL COMMENT ,  
  5. ,  
  6. ) NOT NULL COMMENT ,  
  7. ;  
  8. ) character set utf8 NOT NULL,  
  9. ) NOT NULL,  
  10. ;  

 

 新建一个update_mysql.sh,内容如下:
[python] view plaincopy
  1. use chbdb;  
  2. source update.sql  

 

 
然后执行如下命令:
[python] view plaincopy
  1. cat update_mysql.sh | mysql --user=root -ppassword  

 

优点:支持复杂的sql脚本
缺点:
1> 需要两个文件:update.sql和update_mysql.sh
2> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。

方案3

    新建一个shell脚本,格式如下:
 
  1. #!/bin/bash EOF  

 

例如:
 
  1. #!/bin/bash ) NOT NULL COMMENT ,  
  2. ) NOT NULL COMMENT ,  
  3. ) NOT NULL COMMENT ,  
  4. ,  
  5. ) NOT NULL COMMENT ,  
  6. ;  

 

优点:
1>支持复杂的sql脚本
2>无需其它额外文件
缺点:
1> 表名、字段不能使用单引号,需要修改原有sql语句
2> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。

方案4

[python] view plaincopy
  1. mysql -uroot -ppassword < update.sql  
 
优点:支持复杂的sql脚本
缺点:
1> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。
 
 
 
 
posted on 2015-05-21 13:46  清清飞扬  阅读(6401)  评论(0编辑  收藏  举报