我有一个sqlite数据库mydatabase。sqlite。我想创建一个新的数据库副本。使用相同的表但不复制数据的sqlite。不久前,我找到了一种方法来使用它。schema命令和重定向,它工作得很好,但现在我再也记不住那个命令了。我疯狂地在这里寻找解决方案,但没有找到。你能帮帮我吗?谢谢
ckx4rj1h1#
类似于:
sqlite3 mydatabase.sqlite ".schema --nosys" | sqlite3 copy.sqlite
在很多情况下都应该这样做。如果你有一个虚拟表和备份的影子表(像FTS表),那可能会导致错误。
n6lpvg4x2#
经过几次尝试和研究,我想出了这个解决方案。它不像我以前发现的那么简单,但它似乎工作得很好。这是在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
但新的数据库也会被创建,并且它可以正常工作。
2条答案
按热度按时间ckx4rj1h1#
类似于:
在很多情况下都应该这样做。如果你有一个虚拟表和备份的影子表(像FTS表),那可能会导致错误。
n6lpvg4x2#
经过几次尝试和研究,我想出了这个解决方案。它不像我以前发现的那么简单,但它似乎工作得很好。这是在sqlite3的提示符中键入的命令序列。(我不记得的过程只有一行,直接在Windows提示符下键入。)
最后一个命令给出以下错误:
但新的数据库也会被创建,并且它可以正常工作。