在shell脚本执行sql语句为什么会报错

如题所述

你没有理解输入重定向的概念。在你上面的代码中,mysql -uDDAP -p$2是包含在输入重定向范围内的,所以不会提示你输入密码的。
你的$1 和$2也没有定义,可以参考如下写法:
#!/bin/sh
read -p "please input root password" pwd
mysql -uroot -p$pwd << EOF
\. /usr/src/DDAP-1.CreateUser.SQL
\. /usr/src/DDAP-2.CreateDatabase.SQL
\. /usr/src/DDAP-3.CreateTable.SQL
\. /usr/src/DDAP-4.CreateProcedureAndFunction.SQL
\. /usr/src/DDAP-5.CreateData.SQL
EOF
温馨提示:内容为网友见解,仅供参考
无其他回答

在shell脚本执行sql语句为什么会报错
shell执行sql语句出错一般两种原因。1、一种是语句本身错误,这个你就需要仔细检查语句了。2、语句结尾需要用英文逗号结束,否则是执行不过去的。综上所述:仔细检查自己所写的sql语句。

shellsqlplus执行sql文件,报错failedin
2、SQL文件内容问题:检查SQL文件内容是否合法且没有语法错误。确认SQL语句和语法是否正确,并与数据库兼容。3、数据库连接问题:确认您使用的数据库用户名、密码和连接字符串是否正确,并具有足够的权限来执行所需的SQL语句。4、权限问题:确保您在Shell中执行sqlplus命令的用户具有足够的权限来执行SQL文件...

在shell脚本执行sql语句为什么会报错
sql语句要在数据库中执行才可以,所以要先连接数据库。比如如果是oracle那么首先要sqlplus连接,但是因为sqlplus本身是一个交互的内容,所以要改为非交互的模式,这个需要一些参数。具体什么参数我忘了,不过确实需要参数才行。而且shell中的sql脚本也不是直接写就可以。要写成块的状态,或者调用脚本的状态才...

在shell里加这个sql报ERROR at line 3: ORA-00907: missing right paren...
个人认为:ORA-00907是在oracle没什么错误可以报,还不能执行时的一个兜底的报错。这个ora报错本身就是一个笑话,所以要是要到这个报错,那么就先复制语句到普通执行连接窗口中,看看能不能执行,如果语句在普通连接中能执行,那么就说明语句本身没有错误,然后再去找连接,我记得在什么地方看过OLEDB的连...

求一个linux下的shell脚本执行mysql的sql语句,但老是 不成功...大神帮...
这里是否没有加``,另外shell下赋值在等号两侧是不允许有空格的,这个不知道是不是你贴在里面显示的错误 第二,$sqlw取出来的应该就已经是id>3的了,那么你在for循环里的判断if [ "$num" -gt "3" ]应该进不去,所以循环里是不会走到if里去的,你可以在if外面打印一下$num的值看看。

shell 与sqlplus传参数报错
因为su - oracle 之后,就进入了oracle 用户下的shell ,这个shell 下,$cpu1 这个变量是不会继承下来的,$cpu1只存在于执行su - oracle 的用户下。为了避免这中情况,你需要先进入oracle ,再执行cpu1赋值,即:su - oracle cpu1=`head -n 10 first.txt| tail -n 1 | cut -c 1-10`echo...

shell 打印执行的异常
用I\/O重定向。1为正常输出,2为异常输出,只要将2重定向到文件就行了。!\/bin\/sh dbaccess dbname test.sql 2>>logfile 默认是1,所以重定向符号前要加上2。

shell脚本里执行多个sql语句问题
你的$1 和$2也没有定义,可以参考如下写法:!\/bin\/sh read -p "please input root password" pwd mysql -uroot -p$pwd << EOF \\. \/usr\/src\/DDAP-1.CreateUser.SQL \\. \/usr\/src\/DDAP-2.CreateDatabase.SQL \\. \/usr\/src\/DDAP-3.CreateTable.SQL \\. \/usr\/src\/DDAP-4.Create...

shell调度sql脚本,一直卡在map20%
数据库服务器负载过高。数据库服务器负载过高,执行SQL脚本的进度可能会受到影响,可通过监控数据库服务器的性能指标,如CPU利用率、内存使用情况等,来确定是否存在负载过高的问题,如是负载过高导致的问题,可考虑优化数据库服务器的配置或增加硬件资源来改善性能。

Linux 下执行isql 报bash:!@mdb: event not found 求大佬解答
分析:先从大的方面看,你是在执行一个shell脚本,因此需要满足shell的规则。在linux下,“!”在 bash 中有着特殊的含义。解决方案:转义处理 使用时做转义:在!前加上\\,也即\\!,即可打出感叹号了。

相似回答