标签: ksh

Oracle PL/SQL:将查询结果转储到文件中

我正在研究一个pl sql存储过程.我需要做的是选择,使用游标,并为每个记录使用值构建一个字符串.最后,我需要将其写入文件.我尝试使用dbms_output.put_line("toto"),但缓冲区大小很小,因为我有大约1400万行.我从unix ksh调用我的程序.我正在考虑使用"假脱机"(在ksh方面)转储我的程序的结果,但我不知道该怎么做(如果这是可能的)

任何人有任何想法?

sql unix oracle ksh plsql

3
推荐指数
1
解决办法
3万
查看次数

脚本问题

当我在命令行执行此操作时:

awk 'BEGIN{OFS=FS=","}$3~/^353/{print}' axeM10_20110510100219_59.DAT_353 >log
Run Code Online (Sandbox Code Playgroud)

它很好地执行vey而不花很多时间,并立即给我输出文件.

但是当我在shell脚本中包含它时:

#!/usr/bin/ksh

for i in *.DAT_353
do
awk 'BEGIN{OFS=FS=","}$3~/^353/{print}'  ${i} > ${i}_changed >/dev/null
done

exit
Run Code Online (Sandbox Code Playgroud)

该脚本生成一个0字节的文件.我可以知道这里有什么问题吗?

unix shell ksh

3
推荐指数
1
解决办法
40
查看次数

检查变量已设置,值为ksh

我有一个用户输入的脚本,REFRESH选项是可选的.我需要测试以查看$ REFRESH是否存在并且等于字符串"REFRESH",如果它然后运行特定的代码块.

用户将执行

./export_data.sh <user> <type> [REFRESH]
Run Code Online (Sandbox Code Playgroud)

如果我在PHP中这样做我会简单地使用isset()函数,在ksh中是否存在等价?

我尝试了以下但是这次失败,因为在第二次测试中没有设置$ REFRESH:

if [ -n $REFRESH ] && [ $REFRESH == "REFRESH" ]
then
    echo "variable is set and the expected value";
    # do stuff
fi
Run Code Online (Sandbox Code Playgroud)

我能想到的另一种方法是嵌套if但是这看起来很乱:

if [ -n $REFRESH ]
then
    if [ $REFRESH == "REFRESH" ]
    then
        echo "variable is set and the expected value";
        # do stuff
fi
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

shell ksh

3
推荐指数
1
解决办法
3万
查看次数

使用反引号时如何在KornShell脚本中保留空格?

我正在使用KornShell(ksh)中的脚本.我的数据库连接是通过SQLPLUS连接到Oracle 9i数据库.我没有任何问题将DB值转换为shell变量,除了任何连续的空格被自动截断为只有一个字符.

这是我的代码示例:

MY_VAR=`sqlplus -s usr/pass@db << !
set heading off;
set pagesize 0;

select a_value from a_table where an_index = 25;
!`
Run Code Online (Sandbox Code Playgroud)

数据库中的实际数据如下:

Dec 15 09:19:10 <24:0070> User record (5    XATY       41839FG8   58775HK9AFF) is invalid for this condition
Run Code Online (Sandbox Code Playgroud)

我上面的代码示例返回如下:

Dec 15 09:19:10 <24:0070> User record (5 XATY 41839FG8 58775HK9AFF) is invalid for this condition
Run Code Online (Sandbox Code Playgroud)

间距对我正在使用的内容至关重要.

预先感谢您的帮助.

unix shell scripting ksh sqlplus

3
推荐指数
1
解决办法
1626
查看次数

$ {!arr [*]}在bash和ksh中是不同的?

例如:

arr=([5]=5 [10]=10)
echo ${!arr[*]}
Run Code Online (Sandbox Code Playgroud)

Bash输出5 10但是ksh输出10 5?他们的意思不一样吗?

bash ksh

3
推荐指数
1
解决办法
295
查看次数

如何使用awk在循环中打印列?

我有一个命令的多列文本输出,并希望一次打印一列,如:

#!/usr/bin/ksh

typeset -i i=0
while [[ $i -lt 5 ]]; do
  <command 1> |awk '{print $i}' |<command 2>
  i=$i+1
done
Run Code Online (Sandbox Code Playgroud)

我知道$i不是在awk中指定第i列的方法.这里的正确用法是什么?

比如,输出来自command 1:

"abc" "def" "ghi" "jkm"
"123" "456" "789" "0ab"
"erf" "fad" "dae" "kjh"
Run Code Online (Sandbox Code Playgroud)

该值不一定是3个字符长.这只是一个例子.

我希望依次将第1列放到第4列,供我们使用command 2.

shell awk ksh

3
推荐指数
2
解决办法
3万
查看次数

在Linux脚本中,是否可以在同一进程中执行多个命令?

我有一个包含以下内容的脚本:

db2 connect to user01
db2 describe indexes for table table_desc
Run Code Online (Sandbox Code Playgroud)

我想要的是执行第一行的过程与运行第二行的过程不同.这意味着执行第一行的进程获得连接,而运行第二行的第二个进程根本没有连接.这是经过验证的,因为我在第二行收到错误,说没有数据库连接.

是否可以使用相同的进程运行这两个命令?或者至少是一种将第一个过程"加入"到第二个过程的方法?

db2 bash shell ksh

3
推荐指数
1
解决办法
706
查看次数

ksh中的变量间接

在如下的ksh-snippet中

iname=FA
USER_FA=xyz 
USER_CS=test
TDUSER=USER_$iname
${!TDUSER}
Run Code Online (Sandbox Code Playgroud)

${!TDUSER}没有按预期工作.为什么?

unix ksh

3
推荐指数
1
解决办法
334
查看次数

@($ {VAR})是什么意思?

在查看一些shell脚本时,我遇到了几个if语句实例,它们将一些正常变量与另一个包含在@()括号中的变量进行比较.

@(....)是否有一些特殊的含义,或者我错过了一些明显的东西?如果测试的示例:

if [[ ${VAR} != @(${VAR2}) ]]
Run Code Online (Sandbox Code Playgroud)

谢谢

unix bash shell ksh

3
推荐指数
1
解决办法
81
查看次数

在ksh中捕获CTRL + D.

如何在退出时和退出后抓住CTRL+ D键盘ksh

while true; do
  read cmd
  echo $cmd
  if [ "$cmd" = "?????" ]; then
        break
  fi

done
Run Code Online (Sandbox Code Playgroud)

linux shell ksh

3
推荐指数
1
解决办法
867
查看次数

标签 统计

ksh ×10

shell ×7

unix ×5

bash ×3

awk ×1

db2 ×1

linux ×1

oracle ×1

plsql ×1

scripting ×1

sql ×1

sqlplus ×1