簡體   English   中英

無法通過 bash 腳本向 kubernetes 中的 postgres pod 發出長 sql 查詢

[英]Unable to issue long sql query to postgres pod in kubernetes via bash script

我正在嘗試通過 bash 腳本對 k8s 中的 postgres pod 執行查詢,但是當我選擇大量列時無法獲得結果。 這是我的查詢:

kubectl exec -it postgres-pod-dcd-wvd -- bash -c "psql -U postgres -c \"Select json_build_object('f_name',json_agg(f_name),'l_name',json_agg(l_name),'email',json_agg(email),'date_joined',json_agg(date_joined),'dep_name',json_agg(dep_name),'address',json_agg(address),'zip_code',json_agg(zip_code),'city',json_agg(city), 'country',json_agg(country)) from accounts WHERE last_name='ABC';\""

當我減少要在查詢中選擇的列數時,我會得到結果,但是如果我使用所有列名,查詢就會無限期地掛起。 這里可能有什么問題?

更新:

我嘗試將查詢用作:

kubectl exec -it postgres-pod-dcd-wvd -- bash -c "psql -U postgres -c \"Select last_name,first_name,...(other column names).. row_to_json(accounts) from register_account WHERE last_name='ABC';\""

但這也懸而未決。

當我從 pod 內部嘗試時,它可以工作,但我需要通過 bash 腳本執行它

意味着它幾乎可以肯定是結果分頁; 當您運行exec -t它會在 Pod 中設置一個 TTY,就像您以交互方式連接一樣,因此它可能正在等待您按空格或“n”進入下一頁

您可以使用env PAGER=cat psql -c "select ..."或使用--pset pager=off禁用分頁,如psql --pset pager=off -c "Select ..."

此外,除非您的.bashrc正在設置一些變量或以其他方式在 Pod 中執行工作,否則無需運行bash -c 使用exec -- psql應該可以正常工作,所有其他條件都相同。 如果您想使用PAGER=cat方法,您需要使用env命令,因為$ ENV=var some_commandshell 語法,因此不能直接輸入exec

由於結果列有很多 json 處理,我認為執行這兩個查詢所花費的時間是不同的。

也許您可以登錄到 pod 並執行查詢並查看。

kubectl exec -it postgres-pod-dcd-wvd -- bash 

現在您在吊艙內。 然后我們可以執行查詢。

# psql -U postgres -c \"Select json_build_object('f_name',json_agg(f_name),'l_name',json_agg(l_name),'email',json_agg(email),'date_joined',json_agg(date_joined),'dep_name',json_agg(dep_name),'address',json_agg(address),'zip_code',json_agg(zip_code),'city',json_agg(city), 'country',json_agg(country)) from accounts WHERE last_name='ABC';\"

# psql -U postgres -c \"Select last_name,first_name,...(other column names).. row_to_json(accounts) from register_account WHERE last_name='ABC';\"

現在您將能夠看到一個查詢是否需要更長的時間來執行。

此外,可以使用請求超時值 ( --request-timeout=5m ) 執行kubectl exec pod命令以查看是否存在緩慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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