.bat到.sh转换为SQL * Loader在UNIX PC上启动

时间:2012-04-25 14:12:52

标签: batch-file converter sh sql-loader

我有一个简单的.bat文件

@echo; set nls_lang=russian_cis.ru8pc866  
@echo off

SET NLS_NUMERIC_CHARACTERS=. '


sqlldr.exe userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100

cmd

我需要转换为.sh文件,以便在基于UNIX的pc上运行。 我开始阅读“BASH Programming - Introduction HOW-TO”(它是否适合初学者?),但这是一个偶然的任务,死机来了。

有人可以帮我转换文件吗?非常感谢!!!

1 个答案:

答案 0 :(得分:1)

重写你的剧本。

  #!/bin/bash

  # @echo; 
  # set nls_lang=russian_cis.ru8pc866 
  export NLS_LANG=russian_cis.ru8pc866

  # not needed @echo off

  # SET NLS_NUMERIC_CHARACTERS=. '
  export NLS_NUMERIC_CHARACTERS='.'

  PATH="/path/to/sqlDir/install:${PATH}"
  # sqlldr.exe userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100
  sqlldr userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100

  # ? cmd

我已经把你的代码留了下来,但是注释掉了(使用shell注释char'#')。未注释的行是将.bat语法“转换”为Linux / Unix bash / shell语法。

上面有一些可能需要解决的问题:

  1. 您必须在重置PATH时包含正确的值, 请注意,那里的值严格来说明问题。 使用export以便在当前shell中设置变量( shell脚本)对从shell运行的子进程可见 脚本,在这种情况下,重要的是sqlldr

  2. 我不确定您真正需要分配的值     NLS_NUMERIC_CHARACTERS。请注意,引用单引号     shell可用的char ',你应该得到确切的值     使用你想要的。如果使用'*'或其他reg-exp字符,则为此     可能会导致问题。

  3. 您可能会发现sqlldr.exe的名称完全相同。该     linux / unix约定的可执行命令不需要     .exe扩展名,因此我使用了sqlldr。只需使用全名即可     您在已安装目录中找到的程序。

  4. #!/bin/bash行需要是文件中的第一行,没有前导空格。

    您还需要通知您的操作系统该脚本是可执行的。从bash cmd行,在包含此脚本的目录中,执行

     chmod 755 mySQLLDR_runningScript
    

    最后,不确定为什么你的.bat文件末尾有cmd,打开一个新窗口?您需要在系统上进行试验才能找到正确的cmd来执行此操作。也许是xterm

    我希望这会有所帮助。