簡體   English   中英

如何在 bash 腳本中執行 docker sqlplus 查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM