SQLite 是一个嵌入式数据库,它的设计初衷是读取本地文件系统。jdbc:sqlite:/path/to/file.db 中的路径指的是运行 DBeaver 的那台电脑(你的本机)的路径,而不是远程服务器的路径。JDBC 驱动无法通过网络直接“挂载”远程文件进行读写(这样做极不稳定且容易损坏数据库)。
要连接另一台电脑上的 SQLite 数据库,你有以下 3 种可行方案,按推荐程度排序:
方案一:在远程电脑上启动 Web 服务(最推荐,无需配置复杂网络)
如果那台远程电脑可以运行程序,最简单的方法是在上面运行一个轻量级的 Web 服务器(如 LiteFS, Datasette, 或简单的 Python 脚本),将 SQLite 数据通过 HTTP/API 暴露出来。但如果你只是想用 DBeaver 管理,更常见的做法是:
使用 SSH 隧道 + 本地映射(如果远程是 Linux/Mac)
如果远程电脑是 Linux 或 Mac,并且你可以通过 SSH 连接它:
- 不要直接连文件。
- 在 DBeaver 创建连接时,选择 SQLite。
- 点击连接设置中的 SSH 标签页。
- 勾选 Use SSH Tunnel,填写远程电脑的 IP、用户名、密码/密钥。
- 在 Database 标签页的 File 路径中,填写远程电脑上的绝对路径(例如 /home/user/data.db)。原理:DBeaver 会通过 SSH 隧道将远程文件“映射”到本地临时空间进行读写。这是官方支持的最佳远程访问方式。
方案二:将文件共享为网络驱动器(仅限局域网,有风险)
如果两台电脑在同一局域网(LAN),你可以将远程电脑的文件夹共享,映射为本地的一个盘符,然后让 DBeaver 认为它是本地文件。
步骤:
- 在远程电脑上:右键点击存放 .db 文件的文件夹 -> 属性 -> 共享 -> 设置共享权限。
- 在你的电脑(DBeaver 所在电脑)上:Windows: 打开“此电脑” -> “映射网络驱动器”,输入 \\远程IP\共享文件夹,将其映射为一个盘符(例如 Z: 盘)。Mac: Finder -> 前往 -> 连接服务器 (smb://远程IP/共享文件夹)。
- 在 DBeaver 中:连接类型选 SQLite。文件路径填写映射后的本地路径,例如:jdbc:sqlite:Z:/data/mydb.db。
⚠️ 严重警告:
- 数据损坏风险:SQLite 对文件锁非常敏感。通过网络共享(SMB/NFS)访问 SQLite 文件极易导致数据库锁定失败或文件损坏,尤其是在多用户同时写入时。
- 性能差:每次查询都要通过网络传输数据块,速度很慢。
- 仅建议:仅在只读查询或单人临时维护时使用,严禁用于生产环境的高频写入。
方案三:将数据库文件复制到本地(最安全,适合一次性导入/导出)
如果你只是为了执行之前的“导入 CSV”操作或查看数据,不需要实时同步远程变化:
- 复制文件:通过 SCP, SFTP, 共享文件夹或 U 盘,将远程电脑上的 xxx.db 文件下载/复制到你自己的电脑本地(例如桌面)。
- 在 DBeaver 中连接:路径填写本地路径:jdbc:sqlite:C:/Users/YourName/Desktop/xxx.db。
- 操作:执行你的导入、查询、修改操作。
- 同步回远程(如果需要):操作完成后,再将修改后的 .db 文件上传覆盖回远程电脑。
总结建议
场景 | 推荐方案 | 操作方法 |
远程是 Linux/Mac,且有 SSH
| SSH 隧道 (最佳) | DBeaver 连接设置 -> 开启 SSH Tunnel -> 填远程路径。 |
只是临时查数据或导入 CSV | 复制到本地 (最稳) | 把文件拷过来 -> 本地操作 -> 拷回去。 |
必须实时远程访问且无 SSH | 网络共享 (高风险) | 映射网络驱动器 (Z:) -> 指向 Z 盘路径。慎用写入操作! |
生产环境多人使用 | 更换数据库 | SQLite 不适合网络并发。建议迁移到 PostgreSQL 或 MySQL,它们原生支持网络连接 (jdbc:postgresql://ip:port/db)。 |
针对你之前的导入需求:
强烈建议使用 方案三(复制到本地)。
- 把远程的 .db 文件拷到你电脑。
- 在本地用 DBeaver 连接这个本地副本。
- 执行 CSV 导入(解决 Unique 约束问题)。
- 确认无误后,把新的 .db 文件传回远程电脑覆盖原文件。
这样既避免了网络锁死问题,又保证了数据导入的稳定性。
