Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chuyển các giá trị được đọc từ tệp dưới dạng đầu vào cho truy vấn SQL trong Oracle

Giải pháp được đưa ra bởi @codeforester hoạt động. Tuy nhiên, tôi không thể sử dụng nó vì nó tạo ra nhiều kết nối DB bằng số dòng trong tệp của bạn, điều này có thể gây ra tác động.

Để khắc phục điều này, tôi đã chọn giải pháp dưới đây có thể không lý tưởng nhưng thực hiện công việc chỉ với một kết nối DB.

Xem xét cùng một dữ liệu trong file.txt

 12354
 13456
 13498

Tôi đã sử dụng lệnh sed dưới đây để điền ở trên vào một biến duy nhất "12354,13456,13498"

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

Bây giờ tập lệnh bên dưới sẽ chuyển biến này đến truy vấn SQL và cuộn dữ liệu vào một tệp văn bản:

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

Đầu ra được lưu trữ trong dboutput.txt (cùng với truy vấn 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. ASP Classic SQL Query thông báo lỗi, vui lòng đúng cú pháp

  2. Làm thế nào để tạo thư mục trong Oracle?

  3. Siêu dữ liệu liên quan đến các loại bản ghi cấp gói PL / SQL

  4. Cách chạy Opatch ở dạng không tương tác

  5. Thay đổi dấu phân cách của hàm WM_CONCAT của Oracle 11gR2