Solusi yang diberikan oleh @codeforester berfungsi. Namun saya tidak dapat menggunakannya karena membuat koneksi DB sebanyak jumlah baris dalam file Anda yang merupakan dampak potensial.
Untuk mengatasi hal ini, saya memilih solusi di bawah ini yang mungkin tidak ideal tetapi berhasil hanya dengan satu koneksi DB.
Mengingat data yang sama di file.txt
12354
13456
13498
Saya menggunakan perintah sed di bawah ini untuk mengisi di atas ke satu variabel "12354,13456,13498"
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
Sekarang skrip di bawah ini akan meneruskan variabel ini ke kueri SQL dan mengumpulkan data ke dalam file teks:
#!/bin/bash
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
echo @myvariable
sqlplus /nolog << EOF
CONNECT [email protected]/dbpassword
SPOOL dboutput.txt
select column1 from table_name where id in ($myvariable);
SPOOL OFF
EOF
Outputnya disimpan di dboutput.txt (bersama dengan query SQL)
cat dboutput.txt
SQL> select column1 from table_name where id in (12354,13456,13498);
NAME
---------------------------------------------------------------------------- ----
data1
data2
data3
SQL> spool off