如何在不复制数据的情况下克隆 sqlite 数据库结构(windows)

问题描述 投票:0回答:2

我有一个sqlite数据库mydatabase.sqlite。我想创建一个具有相同表但不复制数据的新数据库 copy.sqlite。前段时间我找到了一种使用 .schema 命令和重定向来做到这一点的方法,它工作正常但现在我不记得那个命令了。我疯狂地在这里搜索解决方案,但没有找到。你能帮我吗?谢谢

database sqlite schema clone
2个回答
1
投票

类似的东西:

sqlite3 mydatabase.sqlite ".schema --nosys" | sqlite3 copy.sqlite

应该在很多情况下这样做。如果您有带有支持影子表的虚拟表(如 FTS 的),这些可能会导致错误。


1
投票

经过多次尝试和研究,我想出了这个解决方案。它不像我之前发现的那样简单,但它似乎工作正常。这是在 sqlite3 的提示符中键入的一系列命令。 (我不记得的过程只是一行长,直接在Windows提示符下输入。)

sqlite> .open mydatabase.sqlite    # open mydatabase.sqlite database
sqlite> .output schema.sql         # redirect output to file schema.sql
sqlite> .schema                    # write schema of mydatabase.sqlite to file schema.sql

sqlite> .open copy.sqlite          # create new empty database
sqlite> .read schema.sql           # copy the structure of mydatabase.sqlite (= schema.sql) to copy.sqlite

最后一条命令报错如下:

Error: near line 2: object name reserved for internal use: sqlite_sequence

但是新数据库也已创建,并且可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.