shell 下执行mysql 命令

摘要:
在shell开发中,很多时候我们需要操作mysql数据库,但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。方案3新建一个shell脚本,格式如下:#!方案4准备一个sql脚本,如update.sql,然后执行如下命令:[python]viewplaincopymysql-uroot-ppassword一旦中间出错,之后脚本就不会执行,例如:如果第一张表已经存在,则会报出如下异常:ERROR1050atline1infile:'update.sql':Table'user'alreadyexists然后脚本退出,第二张表也就无法创建。

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

方案1

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

方案2

准备一个sql脚本,名字为update.sql,例如:
  1. CREATETABLE`user`(
  2. `id`varchar(36)NOTNULLCOMMENT'主键',
  3. `username`varchar(50)NOTNULLCOMMENT'用户名',
  4. `password`varchar(50)NOTNULLCOMMENT'用户密码',
  5. `createdate`dateNOTNULLCOMMENT'创建时间',
  6. `age`int(11)NOTNULLCOMMENT'年龄',
  7. PRIMARYKEY(`id`)
  8. )ENGINE=MyISAMDEFAULTCHARSET=utf8COMMENT='用户信息表';
  9. DROPTABLEIFEXISTS`visit_log`;
  10. CREATETABLE`visit_log`(
  11. `id`varchar(36)charactersetutf8NOTNULL,
  12. `type`int(11)NOTNULL,
  13. `content`textcharactersetutf8NOTNULL,
  14. `createdate`dateNOTNULL,
  15. PRIMARYKEY(`id`)
  16. )ENGINE=MyISAMDEFAULTCHARSET=latin1COMMENT='访问日志';
新建一个update_mysql.sh,内容如下:
  1. usechbdb;
  2. sourceupdate.sql
然后执行如下命令:
  1. catupdate_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. YourSQLscript.
  4. EOF
例如:
  1. #!/bin/bash
  2. mysql-uroot-ppassword<<EOF
  3. usechbdb;
  4. CREATETABLEuser(
  5. idvarchar(36)NOTNULLCOMMENT'主键',
  6. usernamevarchar(50)NOTNULLCOMMENT'用户名',
  7. passwordvarchar(50)NOTNULLCOMMENT'用户密码',
  8. createdatedateNOTNULLCOMMENT'创建时间',
  9. ageint(11)NOTNULLCOMMENT'年龄',
  10. PRIMARYKEY(`id`)
  11. )ENGINE=MyISAMDEFAULTCHARSET=utf8COMMENT='用户信息表';
优点:
1>支持复杂的sql脚本
2>无需其它额外文件
缺点:
1> 表名、字段不能使用单引号,需要修改原有sql语句
2> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。

方案4

准备一个sql脚本,如update.sql,然后执行如下命令:
  1. mysql-uroot-ppassword<update.sql
优点:支持复杂的sql脚本
缺点:
1> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。

免责声明:文章转载自《shell 下执行mysql 命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#中的DataTable简单使用Merge了解Android的编译器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

几篇关于MySQL数据同步到Elasticsearch的文章---第二篇:canal 实现Mysql到Elasticsearch实时增量同步

文章转载自:https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484377&idx=1&sn=199bc88f700f427f4515afac4c7402f1&chksm=eaa82bf1dddfa2e7c9f4319b52fc7a5ab721531039b9...

mysql灾备演练问题

前期写的mysql热备份脚本恢复,还没有正式用到过,但是今天演练灾备恢复,但是遇到几个问题。 测试环境: 搭建mysql,安装xtrabackup vim /etc/yum.repos.d/Percona.repo [percona] name = CentOS $releasever - Percona baseurl=http://repo.per...

MySQL 百万级分页优化(Mysql千万级快速分页)(转)

http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 复制代码 代码如下: SELECT * FROM t...

QT5连接Mysql

摘要 在Qt 5中已经提供了对MySQL数据库的默认支持,要想使用该数据库,需要先进行数据库的安装, 这里我们介绍下在Windows系统中MySQL数据库的安装和简单使用。   Qt如何利用Mysql远程连接数据库?   代码如下:      qDebug()<<QSqlDatabase::drivers(); qDebug...

Shell脚本之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。 一、什么是sed?     sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。   二、sed的处理过程     sed编辑器逐行处理文件(或输入...

MySQL 实现row_number() 分组排序功能

数据库基本脚本 CREATE TABLE `a` ( `ID` INT(10) NULL DEFAULT NULL, `class` INT(10) NULL DEFAULT NULL, `score` INT(10) NULL DEFAULT NULL ) COLLATE='utf8_general_ci' ENGINE=InnoDB; inse...