gpt4 book ai didi

mysql - 用 mysql 命令替换 sqlplus 命令

转载 作者:可可西里 更新时间:2023-11-01 08:36:18 27 4
gpt4 key购买 nike

我正在尝试重写一个用 c-shell 脚本编写的脚本,该脚本使用 sql plus 命令从 oracle 数据库获取信息,但我正在用 mysql 替换它,我想用 mysql 语法替换所有 sqlplus 语法.我要求所有的 c-shell 专家向我解释这个命令的含义

 set SQLPLUS=${ORACLE_HOME}/bin/sqlplus 

set REPORT=${MYBD_HOME}/Scripts/report.sql

所以沿线的某个地方我使用以下命令调用 sql plus 命令

 ${SQLPLUS} ${MYDBUSER} @ &{REPORT}

我可以说我明白右边的值是什么意思 ({ORACLE_HOME}/bin/sqlplus) 是我的 sqplus 命令所在的路径,因此我需要它来调用命令和 {REPORT=$ (MYBD_HOME}/Scripts.report.sql) 调用sqplus命令运行的sql脚本所在的路径是否正确?

我不明白 set 命令将其初始化为什么。 SQLPLUS 是一个变量吗,所以当我尝试将它放入我的 .csh 脚本时,我不必键入路径?

如果是这样,那么我需要做的就是在 mysql 数据库上运行这个脚本,只需将 SQLPLUS(可能将其更改为 MYSQL)设置为指向我的 msql exec 所在的路径

  set MYSQL=${MYSQL_HOME}/bin/mysql

然后调用mysql并运行sql语句

  ${MYSQL}${MYDBUSER}@${REPORT}

这就是我需要做的事情吗? ro tun 相同的 .tsch 脚本以从 mysql 表中获取数据?

最佳答案

你需要这样的东西:

${MYSQL} -u $username -p$password -D $database < ${REPORT}

(用户名和密码传递给 mysql 可执行文件的方式与传递给 SQLPlus 的方式不同。您需要从 ${MYDBUSER} 中解析出用户名和密码。可能包含诸如“scott/tiger”。mysql 命令行客户端上的等价物是“-u scott -ptiger -D scott”。

@(at 符号)是 SQLPlus 的东西;它告诉 SQLPLus 从指定的文件名中读取输入。 mysql 中的等价物是 source 命令,例如

${MYSQL} -u $username -p$password <_EOD!
use $database
source ${REPORT}
_EOD!

此外,您的 report.sql 文件可能包含 spool 和其他 SQLPLus 特定命令。 mysql 命令行客户端在任何地方都不像 SQLPlus 那样强大。


附录:

问:线轴到底有什么作用?

SQLPlus spool 命令将输出定向到一个文件。它经常用于从 SQLPLus session 创建日志文件,也可用于创建报告文件。

set trimspool on
spool /tmp/file.lis
select 'foo' as foo from dual;
spool off

问:为什么我不能将用户名和密码设置为变量并使用它?

你可以设置一个变量,发送到操作系统的命令行的最终结果是一样的。

set MYDBUSER="-u username -ppassword -D database"
${MYSQL} ${MYDBUSER} <${REPORT}

问:mysql好像比sqlplus更冗长。

mysql 命令行客户端采用 unix 风格的选项。这些是等价的:

mysql -u myusername -pmypassword -D mydatabase
mysql --user=myusername --password=mypassword --database=mydatabase

关于mysql - 用 mysql 命令替换 sqlplus 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com