shell 下执行mysql 命令

在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。

方案1

  1. mysql -uuser -ppasswd -e"insert LogTable values(...)"

优点:语句简单

缺点:支持的sql相对简单

方案2

准备一个sql脚本,名字为update.sql,例如:

  1. CREATE TABLE `user` (
  2. `id` varchar(36) NOT NULL COMMENT ‘主键‘,
  3. `username` varchar(50) NOT NULL COMMENT ‘用户名‘,
  4. `password` varchar(50) NOT NULL COMMENT ‘用户密码‘,
  5. `createdate` date NOT NULL COMMENT ‘创建时间‘,
  6. `age` int(11) NOT NULL COMMENT ‘年龄‘,
  7. PRIMARY KEY  (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘用户信息表‘;
  9. DROP TABLE IF EXISTS `visit_log`;
  10. CREATE TABLE `visit_log` (
  11. `id` varchar(36) character set utf8 NOT NULL,
  12. `type` int(11) NOT NULL,
  13. `content` text character set utf8 NOT NULL,
  14. `createdate` date NOT NULL,
  15. PRIMARY KEY  (`id`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=‘访问日志‘;

新建一个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
  2. mysql -u* -h* -p* <<EOF
  3. Your SQL script.
  4. EOF

例如:

 

  1. #!/bin/bash
  2. mysql -uroot  -ppassword <<EOF
  3. use chbdb;
  4. CREATE TABLE user (
  5. id varchar(36) NOT NULL COMMENT ‘主键‘,
  6. username varchar(50) NOT NULL COMMENT ‘用户名‘,
  7. password varchar(50) NOT NULL COMMENT ‘用户密码‘,
  8. createdate date NOT NULL COMMENT ‘创建时间‘,
  9. age int(11) NOT NULL COMMENT ‘年龄‘,
  10. PRIMARY KEY  (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘用户信息表‘;

优点:

1>支持复杂的sql脚本

2>无需其它额外文件

缺点:

1> 表名、字段不能使用单引号,需要修改原有sql语句

2> 一旦中间出错,之后脚本就不会执行,例如:

如果第一张表已经存在,则会报出如下异常:

ERROR 1050 (42S01) at line 1 in file: ‘update.sql‘: Table ‘user‘ already exists

然后脚本退出,第二张表也就无法创建。

方案4

准备一个sql脚本,如update.sql,然后执行如下命令:

[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

然后脚本退出,第二张表也就无法创建。

原文地址:https://www.cnblogs.com/YatHo/p/8275390.html

时间: 2024-10-08 16:21:01

shell 下执行mysql 命令的相关文章

shell界面执行mysql命令

mysql -uroot -poRcl_123 -Dsnsdb_test -e "select host from user;" mysql -uroot -poRcl_123 -Dmysql -e "show variables like '%Thread%';" mysql -uroot -poRcl_123 -Dmysql -e "show status like '%Threads_connected%';" mysql -uroot -

转载:Linux下执行SVN命令时提示错误:Valid UTF-8 data

在Linux下执行svn add *时出现如下错误: svn:  Valid UTF-8  data(hex: 4b)followed by invalid UTF-8 sequence(hex:  fc 63 68  65) 出现这个错误是因为svn库里有文件的名字不是utf-8编码的,这种情况对于中文来说很常见.比如在自己的windows上建了一个中文名字的文件,就会使这种情况. 几经周折,才找到解决办法: 首先,执行命令: ls * | file -/dev/stdin:  ISO-885

shell脚本执行mysql语句出现的问题

shell脚本执行mysql语句出现的问题,问群里的大牛的到解答,是单引号问题,改成双引号即可 #小提示(对本主题没什么关联):ubuntu目前使用的是dash,导致一些for(()函数无法正常执行, sudo dpkg-reconfigure  dash 选择NO,就改会bash了 一.脚本内容如下: #/bin/bash hostname='192.168.2.52' port=3306 username='root' password='123456' #dbname='' #-----s

Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive

1.安装Hive 如果想创建一个数据库用户,并且为数据库赋值权限,可以参考:http://blog.csdn.net/tototuzuoquan/article/details/52785504 2.将配置好的hive-site.xml.core-site.xml.hdfs-site.xml放入$SPARK_HOME/conf目录下 [root@hadoop1 conf]# cd /home/tuzq/software/hive/apache-hive-1.2.1-bin [root@hadoo

shell下的常用命令

1.help  显示所有内置命令的列表,或某一个内置命令的用法 #help //查看所有内置命令 #help 内置命令 //查看内置命令使用方法 #help -s 内置命令 //显示内置命令的语法格式,非常好用哦! [[email protected] var]# help -s cd cd: cd [-L|-P] [dir] 2.echo 用来显示一行文字,默认会自动换行 [[email protected] ~]# echo www www -e 让字符串中的特殊字符起作用.例如: [[em

mac 下重启 MYSQL 命令

在mac 下重启mysql的命令如下: 启动MySQL服务 sudo /usr/local/MySQL/support-files/mysql.server start 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop 重启MySQL服务 sudo /usr/local/mysql/support-files/mysql.server restart

已安装 MySQL,但执行 mysql 命令提示命令找不到

问题: 找到mysql/bin的位置,正常情况下是 /usr/local/mysql/bin 添加到环境变量中 vi /etc/profile 在最后添加:export PATH=$PATH:/usr/local/mysql/bin  保存退出.(先按ESC键,在按I键,进入编辑模式,先按ESC键,在输入:wq保存退出) 是修改生效:source /etc/profile mysql命令可以使用了. 原文地址:https://www.cnblogs.com/DreamFather/p/11357

用shell脚本执行mysql脚本

#!/bin/bash HOSTNAME="127.0.0.1" #数据库本机地址 PORT="3306" USERNAME="root" PASSWORD="pwd" DBNAME="tbs_ra_data" execSql="call DELETE_FLOW_ONEBYONE()" //此处可以是SQL语句或者调用存储过程 echo "Begin execute MYSQL

shell脚本中执行mysql命令

1.mysql -hhostname -uuser -ppsword -e "mysql_cmd" 2. mysql -hhostname -uuser -ppsword << EOF    mysql_cmdEOF 如下简单例子: #!/bin/bashmysql -hservicedb-online -uroot -proot123 -e "use test;select * from tests;"  #方法1实例mysql -hservicedb