You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成PostgreSQL全表DELETE命令报错:未终止美元引号,求解决

解决DBeaver执行PL/pgSQL清空表代码时的美元引号未终止错误

问题说明

在DBeaver工具中运行以下PL/pgSQL代码(用于生成指定schema下所有表的DELETE语句):

DO $$
DECLARE
    table_name TEXT;
    delete_commands TEXT := '';
BEGIN
    FOR table_rec IN
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'xxx'
          AND table_type = 'BASE TABLE'
    LOOP
        delete_commands := delete_commands || 'DELETE FROM xxx.' || quote_ident(table_rec.table_name) || ';' || E'\n';
    END LOOP;
    
    RAISE NOTICE 'Lista de comandos DELETE generada: %', delete_commands;
END $$;

执行后触发错误:

SQL Error [42601]: Unterminated dollar quote started at position 4 in SQL END $$;. Expected terminating $$

解决方案

这个错误是DBeaver的SQL解析器对默认美元引号($$)的处理兼容性问题导致的,有两种解决方式:

方式1:更换自定义美元分隔符

把代码中的$$换成自定义的分隔符(比如$delete_script$),避免DBeaver误解析:

DO $delete_script$
DECLARE
    table_name TEXT;
    delete_commands TEXT := '';
BEGIN
    FOR table_rec IN
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'xxx'
          AND table_type = 'BASE TABLE'
    LOOP
        delete_commands := delete_commands || 'DELETE FROM xxx.' || quote_ident(table_rec.table_name) || ';' || E'\n';
    END LOOP;
    
    RAISE NOTICE 'Lista de comandos DELETE generada: %', delete_commands;
END $delete_script$;

方式2:调整DBeaver的执行设置

  1. 打开DBeaver的首选项(Preferences)
  2. 依次进入Database > SQL Editor > SQL Processing路径
  3. 找到「Multi-line statements」区域,勾选「Allow dollar quotes in statements」选项
  4. 重启DBeaver后重新执行原代码即可

额外优化提示

如果你的目标是直接清空表而非生成DELETE语句,推荐使用更高效的TRUNCATE命令(自动处理外键约束,需加CASCADE):

DO $truncate_script$
DECLARE
    table_rec RECORD;
BEGIN
    FOR table_rec IN
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'xxx'
          AND table_type = 'BASE TABLE'
    LOOP
        EXECUTE 'TRUNCATE TABLE xxx.' || quote_ident(table_rec.table_name) || ' CASCADE;';
    END LOOP;
END $truncate_script$;

内容的提问来源于stack exchange,提问作者paymer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:03:13