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=‘‘
#-----sql cmd---------------------------
sql_cmd=‘ALTER TABLE `mysql`.`user` ADD COLUMN `test` VARCHAR(1) NULL COMMENT ‘test‘ AFTER `t3`;‘
sql_cmd_02=‘show tables;‘
sql_cmd_03=‘ALTER TABLE `mysql`.`user` ADD COLUMN `test3` VARCHAR(1) NULL COMMENT ‘操作系统名test_03‘;‘
sql_cmd_04=‘select * from `mysql`.`user`;‘
sql_cmd_05=‘ALTER TABLE `mysql`.`user` ADD COLUMN `test3` VARCHAR(1) NULL COMMENT ‘操作系统名test_03‘;‘
mysql -h${hostname} -P${port} -u${username} -p${password}  -e "${sql_cmd_03}"

二.报错内容:

t

[email protected]:~$ sh mysql-tb.sh 
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds 
to your MariaDB server version for the right syntax to use near ‘操作系统名test_03‘ at line 1

三.解决方式:

sql语句中的COMMENT的内容需要双引号:

ALTER TABLE `mysql`.`user` ADD COLUMN `test3` VARCHAR(1) NULL COMMENT ‘操作系统名test_03‘;‘
改成:
ALTER TABLE `mysql`.`user` ADD COLUMN `test3` VARCHAR(1) NULL COMMENT "操作系统名test_03";‘
时间: 2024-11-12 18:27:40

shell脚本执行mysql语句出现的问题的相关文章

Shell脚本执行hive语句 | hive以日期建立分区表 | linux schedule程序

#!/bin/bash source /etc/profile; ################################################## # Author: ouyangyewei # # # # Content: Combineorder Algorithm # ################################################## # change workspace to here cd / cd /home/deploy/rec

用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语句

参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: 1).写个sql文件test.sql:use movie_recommendation;select distinct movie_id from T_user_movie_rating_map; 2).在终端输入mysql -uroot -p123456 -e < test.sql > movi

shell脚本中执行mysql语句的方法

方法一:使用文件标签EOF重定向的方法的: #!/bin/bash  user=root  pass=123456  db=mysql  tablename=user  mysql -s --line-numbers -f -u$user -p$pass -D $db --delimiter=";" -E<  --SELECT host,user from $tablename order by 1;  SELECT host,user from $tablename order

Shell脚本中执行mysql语句

对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 --演示环境 [[email protected] ~]# more /etc/issue CentOS release 5.9 (Final) Kernel \r on an \m   [e

转 MySQL shell脚本执行错误 $&#39;\r&#39;:command not found

问题描述 前几天编写的shell小脚本,测试自动安装MySQL的,今天测试运行,然后出现如下错误$’\r’:command not found, 问题分析 检查脚本,没有问题,只是有空行.提示这个错误也不是代码本身错误,怀疑可能是编码格式等错误,:脚本是Linux下编辑完成测试.后期我又做了简单修改,是在在window下修改后完成,然后上传到Linux服务器的.注意到:win下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n. linux下不识别\r为回车符,如果脚本有\r回车符

使用shell脚本调用mysql数据库存储过程,并设置定时任务

本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash#0 1 * * * sh /home/drmTrans3/rj_proc.shhost1=127.0.0.1user=systempasswd=linuxport=3306mysql -h${host1} -u${user} -p${pas

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

Shell脚本读取mysql结果集各数据项的值

在Linux下用shell脚本读取MySQL结果集各数据项的值,按行读取sql结果,将sql执行结果读取到shell变量中,然就可进行处理. HOSTNAME="172.16.xx.xx"    #数据库信息PORT="3306"USERNAME="root"PASSWORD="root" DBNAME="log"         #数据库名称TABLENAME="student" CO