@codeforester द्वारा दिया गया समाधान काम करता है। हालाँकि मैं इसका उपयोग करने में असमर्थ था क्योंकि इसने आपकी फ़ाइल में लाइनों की संख्या के रूप में कई DB कनेक्शन बनाए जो एक संभावित प्रभाव है।
इसे दूर करने के लिए, मैंने नीचे दिया गया समाधान चुना जो आदर्श नहीं हो सकता है लेकिन केवल एक डीबी कनेक्शन के साथ काम करता है।
file.txt में समान डेटा को ध्यान में रखते हुए
12354
13456
13498
मैंने उपरोक्त sed कमांड का उपयोग उपरोक्त को एक एकल चर "12354,13456,13498"
में पॉप्युलेट करने के लिए किया है।myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
अब नीचे की स्क्रिप्ट इस वैरिएबल को SQL क्वेरी में पास करेगी और डेटा को टेक्स्ट फ़ाइल में स्पूल करेगी:
#!/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
आउटपुट को dboutput.txt (एसक्यूएल क्वेरी के साथ) में स्टोर किया जाता है
cat dboutput.txt
SQL> select column1 from table_name where id in (12354,13456,13498);
NAME
---------------------------------------------------------------------------- ----
data1
data2
data3
SQL> spool off