我觉得这是一个愚蠢的问题,因为它似乎是常识。 。 。但没有谷歌搜索我可以放在一起似乎能够给我答案!
我知道如何使用.dump命令从sqlite3数据库中获取数据。但现在我有这个名为export.sqlite3.sql的ASCII文件。 。 。我似乎无法将它恢复到我想要的数据库中。
我的目标是将我在一个rails应用程序中的数据传输到另一个应用程序,这样我就不必花费各种时间再次创建虚拟数据。 。 。所以我从我的第一个应用程序转储数据,摆脱所有CREATE TABLE语句,并确保我的第二个应用程序上的架构匹配。 。 。现在我只需要在那里得到它。
有人会介意帮我吗?当你找到一种方法时,你会告诉我你插入谷歌的是什么,因为我现在正用勺子打开我的脑袋而不是我认为容易找到的东西。
答案 0 :(得分:58)
cat dumpfile.sql | sqlite3 my_database.sqlite
答案 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
从输入文件恢复数据库。