Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में SQL क्वेरी के इनपुट के रूप में फ़ाइल से पढ़े गए मान पास करें

@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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL सिंटैक्स:उद्धरित पहचानकर्ता

  2. ओरेकल उदाहरण में इन आउट पैरामीटर के साथ संग्रहीत प्रक्रिया

  3. जावा मल्टीकास्ट टाइम टू लिव हमेशा 0 . होता है

  4. पैच नीति

  5. सी # को ओरेकल से जोड़ना