我有一个sqlite数据库mydatabase.sqlite。我想创建一个具有相同表但不复制数据的新数据库 copy.sqlite。前段时间我找到了一种使用 .schema 命令和重定向来做到这一点的方法,它工作正常但现在我不记得那个命令了。我疯狂地在这里搜索解决方案,但没有找到。你能帮我吗?谢谢
类似的东西:
sqlite3 mydatabase.sqlite ".schema --nosys" | sqlite3 copy.sqlite
应该在很多情况下这样做。如果您有带有支持影子表的虚拟表(如 FTS 的),这些可能会导致错误。
经过多次尝试和研究,我想出了这个解决方案。它不像我之前发现的那样简单,但它似乎工作正常。这是在 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
但是新数据库也已创建,并且可以正常工作。