我有100条记录。当我运行下面的代码时,SQL * Plus连接使用100%的CPU打开多次。有没有什么方法可以让我只打开一次SQL * Plus连接,即i。即外部while
循环?在while循环中只打开一次sqlplus连接一次
**#!/bin/bash
export ORACLE_HOME=/software/oracle/ora10204
export PATH=$PATH:$ORACLE_HOME/bin
INPUT_FILE='file.csv'
IFS=','
i=0
while read name id do
a[i]="$name"
b[i]="$id"
echo "${a[$i]} ${b[$i]}"
set serveroutput on;
sqlplus .../[email protected]'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=...)(HOST=...)(PORT=...)))(CONNECT_DATA=(SID=...)))'<<EOF
insert into code_entry(inh_valu,edi_valu) values('${a[$i]}' , '${b[$i]}');
EOF
let i=$i+1
done < $INPUT_FILE**
这是链接[link]的内联链接(http://stackoverflow.com/questions/16192414/unable-to-find-sqlplus-processes-runn ing-when-executed-shell-script-via-crontab#comment23258650_16253971) – myst 2013-05-09 05:37:54
这个数据文件在服务器上还是单独的客户端?你有没有看过使用SQL * Loader或外部表来加载这个文件? – 2013-05-09 06:39:19
类似的问题:[只连接到sqlplus而没有写入循环中的文件](https://stackoverflow.com/q/21273838/427158) – maxschlepzig 2017-10-04 20:54:57