DBeaver执行多SELECT脚本仅导出首个结果,求解决办法
问题背景
环境信息
- DBeaver版本: 23.2.4.202311051706
- 数据库: Informix
- 操作系统: Windows 10
问题说明
我有一个包含多条SELECT语句的脚本文件,希望导出所有语句的执行结果,示例脚本如下:
-- Script parameters/variables @set my_number = 1800003835 -- export command @export { "type": sql, "producer": { }, "consumer": { "outputFolder":"d:/temp/dbeaver/exports", "appendToFile":"true", "useSingleFile":"true" }, "processor": { "includeAutoGenerated": "true"} } select * from table1 where mninum = '${my_number}'; select * from table2 where mninum = '${my_number}'; select * from table3 where mninum = '${my_number}';
点击“执行SQL脚本”按钮后,仅执行并导出第一个查询结果就停止。尝试在其他查询前添加@export命令,仍仅第一个查询执行。请问如何让所有查询都执行并导出结果?
解决方法
1. 切换脚本执行模式
DBeaver默认的“执行SQL脚本”会在返回第一个结果集后暂停,尤其是开启导出时。你需要调整执行模式:
- 在脚本编辑器顶部工具栏,找到执行模式下拉框(默认显示“执行到第一个结果”),选择**“执行全部脚本”或“执行所有语句”**选项,再重新执行脚本。
2. 调整@export配置并启用批处理
如果模式切换无效,修改导出配置并优化脚本执行环境:
- 将
@export的type参数改为csv或table(部分数据库对sql类型的多语句导出支持有限),保留追加和单文件设置:
@export { "type": "csv", "producer": { }, "consumer": { "outputFolder":"d:/temp/dbeaver/exports", "appendToFile":"true", "useSingleFile":"true" }, "processor": { "includeAutoGenerated": "true"} }
- 在脚本开头添加如下配置,避免中间输出中断执行:
@set echo off @set autocommit on @set my_number = 1800003835
- 再次以“执行全部脚本”模式运行。
3. 添加明确的语句分隔符
在每个SELECT语句前后添加分号;,强制DBeaver识别所有独立语句:
@set my_number = 1800003835 @export { "type": sql, "producer": { }, "consumer": { "outputFolder":"d:/temp/dbeaver/exports", "appendToFile":"true", "useSingleFile":"true" }, "processor": { "includeAutoGenerated": "true"} } ; select * from table1 where mninum = '${my_number}'; ; select * from table2 where mninum = '${my_number}'; ; select * from table3 where mninum = '${my_number}';
执行时选择“执行全部脚本”模式即可。
内容的提问来源于stack exchange,提问作者Joe McCay
相关产品推荐
相关产品推荐

