使用sqlite3的.dump备份后提示“File is not a database”问题求助
SQLite备份后提示"File is not a database"的解决方法
问题原因
你用.dump命令导出的是纯SQL文本内容,不是SQLite原生的二进制数据库文件。虽然你用.output=../backup.sqlite将输出写入了后缀为.sqlite的文件,但它本质还是文本格式,直接用sqlite3 backup.sqlite打开自然会报错。
正确操作方式
方法1:用.backup命令直接备份二进制数据库(推荐,适合大库)
进入sqlite3交互环境后执行:
.backup ../backup.sqlite
这个命令直接生成可直接使用的二进制备份文件,备份完成后执行sqlite3 backup.sqlite再运行.tables就能正常查看表信息。
方法2:用.dump导出SQL文本后恢复成数据库
如果已经导出了SQL文本文件,需要通过导入操作生成数据库:
- 先确保导出的文件是纯SQL内容,建议将后缀改为
.sql(比如backup.sql) - 执行以下命令创建并导入数据:
sqlite3 backup.sqlite < backup.sql
额外提示
对于40GB的大型数据库,优先用.backup命令,它的备份效率更高,不会像.dump那样生成体积更大的SQL文本,也能避免文本导入过程中可能出现的异常。
内容的提问来源于stack exchange,提问作者chovy
相关产品推荐
相关产品推荐

