【问题标题】:KornShell SQL script parser -- parallel execution from kshKornShell SQL 脚本解析器——从 ksh 并行执行
【发布时间】:2012-11-03 14:03:44
【问题描述】:

我正在尝试在 KornShell (ksh) 协同进程中并行运行一堆脚本。其中一些脚本包含许多 DDL 语句。这些 DDL 语句被确定为独立的并且针对不同的(和大型/昂贵的,例如:3500 万行及以上)数据库对象工作。为了并行运行它们,我正在考虑为每个 DDL 语句创建单独的子脚本——这样我就可以说:SQL*Plus——这将是很多 :(——导致读取和写入太多——因为它是一个批处理,所以所需的时间不是很关键,但是(在这个单一的磁盘并行执行环境中可能仍然会导致抖动)..

我仍然不喜欢物理脚本扩散的想法。想知道是否有办法从 ksh 调用解析器,以便我可以从相当大的脚本文件中提取每个 DDL / DML 或任何其他语句,并且以编程方式在后台进程中执行它们..有什么想法吗?

【问题讨论】:

  • 是的,这是可能的。使用while read line ; do .... ; done < file 查找 ksh 示例。您还需要在命令行上阅读带有尾随 '&' 字符的后台任务。做一些测试,当你遇到困难时,发布一个新问题,其中包含示例输入、所需的输出/操作、代码、当前输出和错误消息,以及当前输出错误原因的描述。如果你告诉你的老板这将在 3 天内完成,是时候开始重新设定那些期望了,你提出的不是一朝一夕的事情! ;-) 祝你好运。
  • 在这里搜索[ksh] OR [bash] background。关于 [bash] 的问题比 [ksh] 多得多,但是 bash 和 ksh 有 95% 的相似之处,您将阅读到的关于 bash 中后台进程的大部分内容都适用于 ksh。 (哦,顺便说一句,如果您在 AIX 或 solaris 上执行 ksh,默认情况下您将使用 ksh88。四处寻找可能安装“新”ksh 的位置。)。再次祝你好运。
  • 感谢 cmets Shellter——我的问题更多是关于“解析”,而不是关于 Korn / 控制结构本身。无论如何,谢谢。
  • 提出一个问题几乎总是一个好主意:1. 涵盖您希望处理的案例的最少样本数据,2. 给定输入所需的输出,3. 到目前为止您尝试过的代码,甚至只是伪代码,4. 你得到的结果和准确的错误消息。 5 为什么当前输出是错误的以及关于如何修复它的问题。如果您能提供一些详细信息,我们或许可以为您提供帮助。祝你好运。
  • 输入:带有许多 DDL 的单个 .sql 文件,,,输出:提取 DDL,,,我的想法:可能需要一个好的解析器?!,,,再次感谢。

标签: sql shell parsing parallel-processing ksh


【解决方案1】:

这行得通吗:

cat DDL_statements | parallel -j20 --pipe -N 10 sql oracle://scott:tiger@server

这假设 DDL_statements 是 1 行长(如果它们不是 1 行长,请举几个例子)。它并行运行 20 个作业,并以 10 个语句块的形式启动它们。

它使用 GNU Parallel(和 GNU sql - GNU Parallel 的一部分)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多