[英]how to execute docker sqlplus query inside bash script?
On Ubuntu 21.04, I installed oracle dtb from docker, works fine I am using it for sql developer but now I need to use it in shell script. 我不確定它是否可以以這種方式工作,或者是否有更好的方式。 我正在嘗試運行簡單的腳本:
#!/bin/bash
SSN_NUMBER="${HOME}/bin/TESTS/sql_log.txt"
select_ssn () {
sudo docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus username/password@ORCLCDB;" <<EOF > $SSN_NUMBER
select SSN from employee
where fname = 'James';
quit
EOF
}
select_ssn
運行此程序后,沒有任何反應,我需要終止 session。 或者
輸入設備不是 TTY
被展示
從 Docker 外部指定 here 文檔是有問題的。 嘗試將查詢命令內聯到 Bash 命令行中。 請記住, bash -c
的字符串參數可以任意復雜。
docker exec -it oracle bash -c "
source /home/oracle/.bashrc
printf '%s\n' \\
\"select SSN from employee\" \\
\"where fname = 'James';\" |
sqlplus -s username/password@ORCLCDB" > "$SSN_NUMBER"
我拿出了sudo
但也許你真的需要它。 我根據手冊頁的快速瀏覽向sqlplus
添加了-s
選項。
這里的引用很復雜,我不完全確定它不需要額外的調整。 我在 shell 腳本周圍使用了雙引號,這意味着這些引號中的某些內容將在傳遞給容器之前由調用 shell 處理。
在最壞的情況下,如果查詢本身是 static,則在構建時將其存儲在文件中的圖像中將是提供最少驚喜的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.