Postgresql

dbeaver 在不執行的情況下檢查 sql 的語法

  • August 9, 2021

使用 dbeaver 工具,我想在不實際執行腳本的情況下檢查腳本是否存在語法錯誤。

目的:用於長插入查詢(postgresql 語法,PostgreSQL 10.15),形式為:

INSERT INTO schema1.table1
(t1_id, fk1_id, fk_2_id, col1, col2)
 VALUES
          (nextval('schema1.sq_table1'),fk1_id_1,fk1_id_2,col1_val_1,col1_val_2),
           -- etc, literally thousands of lines

我無法在非生產區域中執行查詢的生產版本,因為外鍵不同。

那麼有沒有辦法只檢查 SQL 的語法而不執行它。(它會在非生產區域引發外鍵約束錯誤,所以我*(*驗證語法,但我想加倍確定。

根據下面的評論,我認為對於這裡的情況(插入外鍵),外鍵違規錯誤會驗證語法,但仍然存在一般情況:是否可以驗證 SQL 的語法查詢而不實際執行它?我認為可能有幾種情況這會很有用。

如果您解釋您的查詢,它會被編譯但不會被執行。這意味著它會檢查語法錯誤,但不會針對您的數據驗證約束。

請注意,約束可能會影響編譯器。如果你還沒有讀過它,這裡有 Lucas Eder 的一篇很好的文章來討論這個問題。

引用自:https://dba.stackexchange.com/questions/297639