Oracle
 sql >> база данни >  >> RDS >> Oracle

Предайте стойности, прочетени от файл като вход към SQL заявка в Oracle

Решението, дадено от @codeforester, работи. Въпреки това не можах да го използвам, защото създаде толкова DB връзки, колкото е броят на редовете във вашия файл, което е потенциално въздействие.

За да преодолея това, избрах решението по-долу, което може да не е идеално, но върши работата само с една 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 (заедно със SQL заявката)

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

  2. Как да декларирам променлива и да я използвам в същия Oracle SQL скрипт?

  3. ORACLE - ORA-01843:не е валиден месец

  4. Защо DECODE на Oracle ми дава различна стойност от NVL?

  5. Инструменти за генериране на диаграма на база данни/ER диаграма от съществуваща база данни на Oracle?