簡體   English   中英

PostgreSQL / psql 元命令靜默失敗並且不插入行

[英]PostgreSQL / psql meta-command silently fails and doesn't insert rows

我創建了一個 SQL 文件,我通過 psql 命令運行,大致如下所示:

truncate table my_table; 
\set content `cat /workdir/test.json` insert into my_table values ('test_row', :'content');

第一行與該問題有些無關,除了它確實打印出“TRUNCATE TABLE”這一事實,因此它正在正確讀取和運行 SQL 文件,至少最初是這樣。 但是,永遠不會創建插入行,表始終為空。 然而沒有錯誤消息彈出。

JSON 文件具有有效值(即使我將其縮減為超級基本{} )。 我也試過直接傳遞 sql 命令(只是為了覆蓋我的基礎,只用一個''和同樣的,三個它給出無效的命令錯誤):

psql [...] -c "\\set content `cat /workdir/test.json` insert into my_table values ('test_row', :'content')"

同樣,沒有 output 消息,沒有創建新行。 但是不使用元命令\set確實有效。 例如:

psql [...] -c "insert into my_table values ('test_row', '{}')"

似乎它不喜歡元命令\set ,但沒有任何錯誤信息,不確定我做錯了什么。

腳本和數據庫都在同一個虛擬機上運行。 也就是說,腳本可以通過'localhost'調用主機,並且文件系統/文件路徑應該是相同的,我認為,如果這很重要。

psql元命令(以反斜杠開頭的東西)在行尾終止; 您不能在同一行上有 SQL 語句。

\set寫在一行中,將INSERT寫在另一行中。

如果要使用psql-c選項,請使用多個-c選項:

psql -c "\\set ..." -c "INSERT ..."

暫無
暫無

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

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