sqlplus 和 Ruby

发布于 2024-08-30 09:07:35 字数 100 浏览 5 评论 0原文

有人知道如何在 ruby​​ 中使用 sqlplus 吗? 我需要做这样的事情: system("sqlplus 用户名/pwd@数据库文件名.sql"

谢谢 /尼克拉斯

Anybody knows how to use sqlplus in ruby?
I need to do something like this:
system("sqlplus username/pwd@database filename.sql"

Thx
/Niklas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

腻橙味 2024-09-06 09:07:35

要让 sqlplus 从文件中读取其输入,您需要在文件名前添加 @ 符号。因此,以下内容将起作用:

system("sqlplus", "username/pwd@database", "@filename.sql")

system 可以使用单个参数(完整的命令)或多个参数(如上例所示将命令的参数分开)来调用。 Kernel#exec 的文档 描述了差异(system 的行为方式相同):

如果给 exec 一个参数,
该参数被视为一条线
之前受外壳扩展
正在被处决。如果有多个参数
给出了第二个和后续的
参数作为参数传递给
没有 shell 扩展的命令。如果
第一个参数是一个二元素
数组,第一个元素是
要执行的命令,第二个
参数用作 argv[0] 值,
这可能会出现在流程列表中。

注意:如果您希望 sqlplus 在运行 SQL 后退出并返回到 ruby​​ 程序,请确保在 SQL 文件末尾包含 quit 语句。

To get sqlplus to read its input from a file you need to prefix the filename with an @ symbol. So the following would work:

system("sqlplus", "username/pwd@database", "@filename.sql")

system can either be called with a single argument (your complete command) or multiple arguments (with the arguments to your command separated out as in the above example). The documentation for Kernel#exec describes the difference (system behaves in the same way):

If exec is given a single argument,
that argument is taken as a line that
is subject to shell expansion before
being executed. If multiple arguments
are given, the second and subsequent
arguments are passed as parameters to
command with no shell expansion. If
the first argument is a two-element
array, the first element is the
command to be executed, and the second
argument is used as the argv[0] value,
which may show up in process listings.

Note: If you want sqlplus to exit and return to your ruby program after running the SQL then make sure you include a quit statement at the end of your SQL file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文