将SQLite3转储重新导入数据库

时间:2008-11-22 19:48:42

标签: sql database sqlite import

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

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

我的目标是将我在一个rails应用程序中的数据传输到另一个应用程序,这样我就不必花费各种时间再次创建虚拟数据。 。 。所以我从我的第一个应用程序转储数据,摆脱所有CREATE TABLE语句,并确保我的第二个应用程序上的架构匹配。 。 。现在我只需要在那里得到它。

有人会介意帮我吗?当你找到一种方法时,你会告诉我你插入谷歌的是什么,因为我现在正用勺子打开我的脑袋而不是我认为容易找到的东西。

4 个答案:

答案 0 :(得分:58)

cat dumpfile.sql | sqlite3 my_database.sqlite

This is modified from the sqlite3 getting started guide.

答案 1 :(得分:45)

您未指定操作系统,而

sqlite3 my_database.sqlite < export.sqlite3.sql

将适用于unix风格,它不适用于Windows。

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

sqlite3> .read export.sqlite3.sql

答案 2 :(得分:2)

这也应该有效:

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

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

答案 3 :(得分:-1)

将此用于unix口味。

按Ctrl + Alt + T并写入

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

从输入文件恢复数据库。