草庐IT

mysql - 用 mysql 命令替换 sqlplus 命令

coder 2023-10-23 原文

我正在尝试重写一个用 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/

有关mysql - 用 mysql 命令替换 sqlplus 命令的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  3. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  4. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. ruby - Ruby gsub 替换中的行为不一致? - 2

    两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio

  7. ruby - 从 Ruby : capturing the output while displaying the output? 运行 shell 命令 - 2

    我有一个问题。我想从另一个ruby​​脚本运行一个ruby​​脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密

  8. ruby-on-rails - 在这种情况下我如何模拟一个对象?没有明显的方法可以用模拟替换对象 - 2

    假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl

  9. ruby - 如何搜索、递增和替换 Ruby 字符串中的整数子字符串? - 2

    我有很多这样的文档:foo_1foo_2foo_3bar_1foo_4...我想通过获取foo_[X]的所有实例并将它们中的每一个替换为foo_[X+1]来转换它们。在这个例子中:foo_2foo_3foo_4bar_1foo_5...我可以用gsub和一个block来做到这一点吗?如果不是,最干净的方法是什么?我真的在寻找一个优雅的解决方案,因为我总是可以暴力破解它,但我觉得有一些正则表达式技巧值得学习。 最佳答案 我(完全)不懂Ruby,但类似这样的东西应该可以工作:"foo_1foo_2".gsub(/(foo_)(\d+)/

  10. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

随机推荐