在shell开发中,很多时候我们需要操作mysql数据库(比如:查询数据、导出数据等),但是我们又无法进入mysql命令行的环境,就需要在shell环境中模拟mysql的环境,使用mysql相关命令,本文总结几种shell操作mysql的方法,供大家参考。
方案1
view plaincopy to clipboardprint?
01.mysql -uuser -ppasswd -e"insert LogTable values(...)"
mysql -uuser -ppasswd -e"insert LogTable values(...)"
优点:语句简单
缺点:支持的sql相对简单
方案2
准备一个sql脚本,名字为update.sql,例如:
view plaincopy to clipboardprint?
01.CREATE TABLE `user` (
02. `id` varchar(36) NOT NULL COMMENT '主键',
03. `username` varchar(50) NOT NULL COMMENT '用户名',
04. `password` varchar(50) NOT NULL COMMENT '用户密码',
05. `createdate` date NOT NULL COMMENT '创建时间',
06. `age` int(11) NOT NULL COMMENT '年龄',
07. PRIMARY KEY (`id`)
08.) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';
09.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='访问日志';
CREATE TABLE `user` (
`id` varchar(36) NOT NULL COMMENT '主键',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '用户密码',
`createdate` date NOT NULL COMMENT '创建时间',
`age` int(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';
DROP TABLE IF EXISTS `visit_log`;
CREATE TABLE `visit_log` (
`id` varchar(36) character set utf8 NOT NULL,
`type` int(11) NOT NULL,
`content` text character set utf8 NOT NULL,
`createdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='访问日志';
新建一个update_mysql.sh,内容如下:
view plaincopy to clipboardprint?
01.use chbdb;
02.source update.sql
use chbdb;
source update.sql
然后执行如下命令:
view plaincopy to clipboardprint?
01.cat update_mysql.sh | mysql --user=root -ppassword
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脚本,格式如下:
view plaincopy to clipboardprint?
01.#!/bin/bash
02.mysql -u* -h* -p* <<EOF
03. Your SQL script.
04.EOF
#!/bin/bash
mysql -u* -h* -p* <<EOF
Your SQL script.
EOF
例如:
view plaincopy to clipboardprint?
01.#!/bin/bash
02.mysql -uroot -ppassword <<EOF
03. use chbdb;
04. CREATE TABLE user (
05. id varchar(36) NOT NULL COMMENT '主键',
06. username varchar(50) NOT NULL COMMENT '用户名',
07. password varchar(50) NOT NULL COMMENT '用户密码',
08. createdate date NOT NULL COMMENT '创建时间',
09. age int(11) NOT NULL COMMENT '年龄',
10. PRIMARY KEY (`id`)
11.) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户信息表';
#!/bin/bash
mysql -uroot -ppassword <<EOF
use chbdb;
CREATE TABLE user (
id varchar(36) NOT NULL COMMENT '主键',
username varchar(50) NOT NULL COMMENT '用户名',
password varchar(50) NOT NULL COMMENT '用户密码',
createdate date NOT NULL COMMENT '创建时间',
age int(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) 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,然后执行如下命令:
view plaincopy to clipboardprint?
01.mysql -uroot -ppassword < update.sql
mysql -uroot -ppassword < update.sql
优点:支持复杂的sql脚本
缺点:
1> 一旦中间出错,之后脚本就不会执行,例如:
如果第一张表已经存在,则会报出如下异常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后脚本退出,第二张表也就无法创建。
大家知道在mysql命令行中使用source命令,即使中间出错,后续脚本也会继续执行,但是如上几种方式,均无法解决该问题,如果大家有好的建议,请回复,谢谢。
分享到:
相关推荐
shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) student.sql,可以导入到数据库中做假数据,方便处理练习数据库操作
Linux shell操作mysql数据库深入解析 在 Linux shell 中操作 MySQL 数据库是一种常见的需求,特别是在自动化脚本中。下面总结了四种常见的 shell 操作 MySQL 数据库的方法,每种方法都有其优点和缺点。 方案一:...
在MySQL Shell 8.4.0版本中,主要针对Windows x86-64位操作系统进行了优化,提供了高效且便捷的数据操作体验。 这个压缩包`mysql-shell-8.4.0-windows-x86-64bit.zip`包含了以下关键组件和功能: 1. **多语言支持*...
首先,`Shell`是一种Unix或Linux操作系统中的命令解释器,允许用户与系统进行交互。通过编写Shell脚本,我们可以构建自动化任务,包括执行MySQL命令。在你提供的`create_table.sh`文件中,很可能是包含了用于创建...
根据给定的信息,本文将详细解释使用Shell进行MySQL操作的相关知识点,包括MySQL的安装、配置、备份、恢复以及一些常见的问题解决方法。 ### 一、MySQL的安装与配置 #### 1. 使用RPM包安装MySQL 在Linux系统中,...
通过shell脚本来创建MySQL数据库,不仅可以提高工作效率,还能确保操作的一致性和可重复性。下面将详细介绍如何利用shell脚本来创建MySQL数据库,并结合提供的文件进行解析。 首先,我们需要理解shell脚本的基本...
当我们需要在Linux环境下批量处理数据库操作时,结合使用shell脚本和MySQL可以极大地提高效率。以下将详细介绍如何在shell脚本中执行MySQL脚本并传递参数。 首先,我们需要创建一个shell脚本,通常以`.sh`为扩展名...
这里我们关注的是使用Shell脚本来实现MySQL从原表到历史表的数据迁移。这种自动化的方法可以帮助我们高效、准确地处理大量数据,同时减少人为错误。 首先,让我们深入理解`shell`脚本。Shell是Linux和Unix系统中的...
本篇将详细介绍如何使用Shell脚本结合CSV文件批量将数据导入MySQL数据库,以提高工作效率。 首先,`prov.csv` 是一个包含CSV(逗号分隔值)格式的数据文件,这种文件类型常用于存储表格数据,易于读写和处理。在本...
本文将详细讲解如何在Shell脚本中实现多线程,并结合实例介绍如何批量插入MySQL数据库。 首先,我们需要理解为什么要使用多线程。在处理大量并发任务时,多线程可以并发执行任务,避免串行执行的低效,尤其在需要对...
MySQL Shell是MySQL数据库管理系统提供的一款强大的命令行工具,它集成了JavaScript、Python和SQL三种语言环境,为数据库管理员和开发者提供了交互式操作MySQL服务器、管理数据库对象以及执行复杂脚本的功能。...
本资源提供了一个专为MySQL 5.7.8及以前版本设计的shell脚本,它允许用户进行自定义配置,方便快捷地执行数据库备份操作。 首先,我们需要了解`shell`脚本。Shell是Unix或Linux操作系统中的命令解释器,它允许用户...
今天这个备份分二个版本一个是linux上直接安装的mysql,另一种是docker上安装的mysql。基本操作都一样只是备份sql语句不同而已。可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab ...
1. **多语言支持**:MySQL Shell允许用户使用JavaScript、Python或SQL来执行各种数据库操作。这使得熟悉不同编程语言的用户可以无缝切换,提高工作效率。 2. **自动化脚本**:通过编写脚本,用户可以自动化执行重复...
MySQL Shell支持多种操作,包括数据查询、数据操作、数据库管理、性能分析以及脚本编写等,极大地提高了工作效率。 一、MySQL Shell的安装与启动 安装MySQL Shell通常是通过MySQL的安装程序或者单独下载MySQL Shell...
### MySQL Shell一键安装脚本详解 #### 一、MySQL与Shell脚本简介 - **MySQL**:MySQL是一种流行的关系型数据库管理系统(RDBMS),它以其高性能、可靠性和易用性而闻名。MySQL广泛应用于各种场景,从简单的个人...
MySQL Shell是MySQL数据库管理系统的一个重要组件,主要用于交互式地执行SQL命令、JavaScript脚本和Python脚本,提供了一个全面的接口来管理和操作MySQL服务器。在本案例中,我们讨论的是MySQL Shell的8.0.20版本,...
MySQL Shell是MySQL数据库管理系统的一个重要组件,主要用于交互式地管理和操作MySQL服务器,提供了一种集成了JavaScript、Python和SQL的环境。在这个8.0.20版本的Windows 64位版本中,用户可以获得一系列高级功能,...
总之,`adw.rar_shell mysql`这个资源提供了一个学习shell脚本与MySQL数据库交互的实例,对于想要提升Linux系统管理和数据库操作技能的IT从业者来说,这是一个宝贵的资料。通过分析和实践这个脚本,你可以更好地理解...
今天这个备份分二个版本一个是linux上直接安装的mysql,另一种是docker上安装的mysql。基本操作都一样只是备份sql语句不同而已。可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab ...