Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Lewati nilai yang dibaca dari file sebagai input ke kueri SQL di Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa memilih catatan HANYA dari kemarin?

  2. Menggunakan transaksi bersarang di oracle

  3. ORA-00903:nama tabel tidak valid di PreparedStatement

  4. Tentukan Oracle null ==null

  5. Jelaskan Plan Cost Pain Point