Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przekaż wartości odczytane z pliku jako dane wejściowe do zapytania SQL w Oracle

Rozwiązanie podane przez @codeforester działa. Jednak nie mogłem go użyć, ponieważ utworzył tyle połączeń DB, ile jest wierszy w twoim pliku, co może mieć potencjalny wpływ.

Aby temu zaradzić, wybrałem poniższe rozwiązanie, które może nie jest idealne, ale działa tylko z jednym połączeniem DB.

Biorąc pod uwagę te same dane w pliku.txt

 12354
 13456
 13498

Użyłem poniższego polecenia sed, aby wypełnić powyższe do pojedynczej zmiennej „12354,13456,13498”

myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")

Teraz poniższy skrypt przekaże tę zmienną do zapytania SQL i zbuforuje dane do pliku tekstowego:

#!/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

Wynik jest przechowywany w dboutput.txt (wraz z zapytaniem 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. Wydano SQL Developer 4.1.3

  2. pobrać parametr z procedury składowanej?

  3. Jak dynamicznie przekazywać wartości do operatora IN?

  4. Baza danych menedżera pakietów RPM GI 19c

  5. Sprawdź, czy tabela istnieje w Oracle