47

我觉得这是一个愚蠢的问题,因为这似乎是常识。. . 但是我可以放在一起的谷歌搜索似乎无法给我答案!

我知道如何使用 .dump 命令从 sqlite3 数据库中获取数据。但是现在我有了这个名为 export.sqlite3.sql 的 ASCII 文件。. . 我似乎无法将它恢复到我想要的数据库中。

我的目标是将我在一个 Rails 应用程序中的数据传输到另一个应用程序,这样我就不必再花各种时间创建虚拟数据了。. . 所以我从我的第一个应用程序中转储了数据,摆脱了所有 CREATE TABLE 语句,并确保我的第二个应用程序上的模式匹配。. . 现在我只需要把它放进去。

有人介意帮助我吗?当你找到方法时,你能告诉我你在谷歌上插入了什么吗,因为我现在正用勺子敲打我的头,因为我认为这很容易找到。

4

4 回答 4

68
cat dumpfile.sql | sqlite3 my_database.sqlite

这是从 sqlite3 入门指南修改的。

于 2008-11-22T20:08:46.230 回答
54

您没有指定您的操作系统,而

sqlite3 my_database.sqlite < export.sqlite3.sql

适用于 unix 风格,不适用于 windows。

.dump 命令的反面是 .read 命令。语法是

sqlite3> .read export.sqlite3.sql
于 2009-01-30T06:12:11.750 回答
2

这也应该有效:

echo '.read export.sqlite3.sql' | sqlite3 my_database.sqlite3

与“”相比,一个可能的优势sqlite3 my_database.sqlite3 < export.sqlite3.sql是 SQLite 的.read命令可能(现在或将来)比“读入所有文本并执行它”更先进。它可能会进行批处理,这将减少大型转储的内存使用量。不过,我承认这是一个非常模糊且不太可能的优势。很可能,.read只需从输入中读取每一行并执行它,就像重定向和管道运算符一样。

于 2009-06-05T17:55:49.460 回答
-3

将此用于 unix 风格。

按 Ctrl+alt+T 并写入

sqlite3 /home/ubuntu/output.sqlite < /home/ubuntu/input.sql

它从输入文件恢复您的数据库。

于 2013-10-23T12:24:52.850 回答