DBeaver不支持直接导出为SQLite文件,只能先创建SQLite连接(指向.db路径),再通过“导出到数据库”将源数据导入该连接所对应的文件中。

直接导出为 SQLite 文件在 DBeaver 中不可行——它不支持“导出成一个 .db 文件”这种单文件目标格式。你实际能做的,是把数据从源库(如 PostgreSQL、MySQL)导入到一个已存在的 SQLite 数据库连接中,而这个连接背后就是一个 .db 文件。
为什么不能直接“导出为 SQLite 文件”
DBeaver 的导出功能本质是“生成并执行 SQL”,不是“打包二进制”。它的 Export Data 向导里没有 “SQLite file (.db)” 这类导出格式选项;所有“导出为 SQL”操作最终都面向文本 SQL 文件(.sql),而不是可执行的 SQLite 数据库文件。
真正生成 .db 文件的动作,只发生在你建立了一个 SQLite 连接,并将数据写入该连接所指向的路径时——那个路径下的文件,就是你要的 SQLite 库。
- 如果你没提前创建 SQLite 连接,DBeaver 无法知道该把表结构和数据写到哪个磁盘位置
- 即使你导出了
.sql文件,也必须用sqlite3CLI 或其他工具手动执行才能生成.db,DBeaver 不会自动帮你做这步 - 导出 SQL 时若含 PostgreSQL/MySQL 特有语法(如
CREATE TABLE ... SERIAL、ENGINE=InnoDB),直接执行会失败,必须先清理或映射
正确做法:用“导出到数据库”而非“导出为文件”
核心逻辑是:先建好 SQLite 连接(指向一个真实路径),再把源数据“导出到这个连接”。
- 在 DBeaver 中点击“新建连接” → 选择
SQLite→ 在“数据库文件”字段填入绝对路径,例如C:/data/myapp.db(若文件不存在,DBeaver 会自动创建) - 右键源表(如 PostgreSQL 的
users)→Export Data→ 目标类型选Database - Database table(s) - 在“Target Container”下拉框中,选中你刚建的那个 SQLite 连接
- 检查字段映射:SQLite 不支持
TIMESTAMP WITH TIME ZONE、JSONB、ARRAY等类型,需手动改为TEXT或BLOB;主键自增建议用INTEGER PRIMARY KEY - 勾选
Create target table if not exists,避免因表不存在中断
导出后验证 SQLite 文件是否可用
别只看 DBeaver 提示“完成”,要确认文件真实可读且结构正确:
- 用资源管理器确认
C:/data/myapp.db文件大小 > 0,且修改时间更新了 - 在 DBeaver 中双击该 SQLite 连接 → 展开
Tables→ 右键新表 →View Data,看能否加载前 100 行 - 如果报错
no such table,说明导出时表名被自动加了 schema 前缀(如public.users),需在映射步骤删掉 schema 名 - 如果数据全为空或类型错乱,大概率是源字段类型未手动适配 SQLite 限制(比如 PostgreSQL 的
NUMERIC(10,2)导出后变成REAL,精度丢失)
最易被忽略的一点:DBeaver 对 SQLite 的事务支持有限。大数据量导出时,它默认每 1000 行提交一次,但若中途失败,不会回滚已插入部分——你得自己删掉 .db 文件重来,或者改用 CLI + .import 配合 CSV 中转更可控。


















