La solution donnée par @codeforester fonctionne. Cependant, je n'ai pas pu l'utiliser car il a créé autant de connexions à la base de données que le nombre de lignes dans votre fichier, ce qui a un impact potentiel.
Pour surmonter cela, j'ai choisi la solution ci-dessous qui n'est peut-être pas idéale mais qui fait le travail avec une seule connexion DB.
Considérant les mêmes données dans file.txt
12354
13456
13498
J'ai utilisé la commande sed ci-dessous pour remplir ce qui précède dans une seule variable "12354,13456,13498"
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
Maintenant, le script ci-dessous transmettra cette variable à la requête SQL et spoulera les données dans un fichier texte :
#!/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
La sortie est stockée dans dboutput.txt (avec la requête SQL)
cat dboutput.txt
SQL> select column1 from table_name where id in (12354,13456,13498);
NAME
---------------------------------------------------------------------------- ----
data1
data2
data3
SQL> spool off