Сценарию оболочки необходимо прочитать пакет строк (скажем, сначала 150).затем сохранить эти значения в переменной.После выполнения SQL теперь он должен прочитать от 151 до 300. Таким образом, он будет читать строки в количестве 150 и сохранять их в переменной до тех пор, пока не будет прочитано 32000 строк.1003 *
#!/bin/bash
t2val=$(cat /home/trnid | tr '\n' ',' | sed 's/,$//')
sqlplus -s <username>/<passwd>@dbname > /home/file << EOF
set echo on
set pagesize 0
set verify off
set lines 32000
set trimspool on
set feedback off
SELECT *
FROM <dbname>.<tablename1> tr
LEFT JOIN <tablename2> t2 ON t2.id2 = tr.id1
LEFT JOIN <tablename3> t3 ON t3.id2 = tr.id1
LEFT JOIN <tablename4> t4 ON t4.id2 = tr.id1
WHERE tr.TIMESTAMP > SYSDATE - 75 / 1440
AND tr.TIMESTAMP <= SYSDATE - 15 / 1440
and t2.value in ( "t2val")
order by timestamp;
exit;
EOF
trnid имеет 32000 строк, каждая строка содержит номер из 11 цифр.здесь переменная t2val имеет 32000 значений, разделенных запятыми.Но скрипт не запускается с большим значением.Итак, мне нужно разделить его на менее чем 2499 символов и, следовательно, около 150 записей, которые будут взяты из файла trnid.Я хочу выбрать их в серии из 150, а затем поместить в столбец t2val (через запятую), пока не достигну 32000-й строки.Я думаю, таким образом, если у вас есть идея, чтобы принимать значения столбца t2val <2499, пожалуйста, сообщите.ИЛИ помогите мне, как я думаю (выполнение пакета из 150 записей в SQL). </p>