将 SQLite3 转储导入数据库

Posted

技术标签:

【中文标题】将 SQLite3 转储导入数据库【英文标题】:Importing a SQLite3 dump back into the database 【发布时间】:2010-09-23 15:00:32 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:
cat dumpfile.sql | sqlite3 my_database.sqlite

This is modified from the sqlite3 getting started guide.

【讨论】:

优秀的答案。冒着听起来像破唱片的风险,这是对 cat 的无用使用。重定向就是答案: sqlite3 my_database.sqlite 我同意,我通常也用 我建议在前面加上“PRAGMA journal_mode = OFF; PRAGMA synchronous = OFF;”在运行此之前转储文件。这使得恢复速度更快。显然,在实际使用恢复的数据库时,这些设置不应关闭。 60 MB,220'000 行,在 10 秒内,前置“PRAGMA journal_mode = OFF; PRAGMA synchronous = OFF;”谢谢@Brian【参考方案2】:

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

sqlite3 my_database.sqlite < export.sqlite3.sql

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

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

sqlite3> .read export.sqlite3.sql

【讨论】:

unix flavor 命令不起作用.. 你用这个恢复了吗? 是的,但要注意 sqlite3> 不是 unix 命令,它是 sqlite3 提示符 我得到了没有导出声明的解决方案,它恢复了..谢谢 echo .dump | sqlite3 sourcedb.sqlite | sqlite3 targetdb.sqlite 似乎适用于 Windows... 为什么需要导入数据库的转储?我不能只使用 database.db 文件开头吗?【参考方案3】:

这也应该有效:

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

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

【讨论】:

错误:无法使用此命令打开“export./home/ubuntu/trydatabase/newsql.sql”【参考方案4】:

将此用于 unix 风格。

按 Ctrl+alt+T 并写入

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

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

【讨论】:

'Ctrl+alt+T' 对所有 Unix 风格有什么作用? 打开终端。

以上是关于将 SQLite3 转储导入数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将加载 .sql 或 .csv 文件导入 SQLite?

使用 Python 将 CSV 文件导入 sqlite3 数据库表

如何将 mysql 转储导入 SQL Server 数据库

从 MySql 转储导入到配置单元

无法将 PostgreSQL10 转储导入 9.6 数据库

如何将转储文件夹导入 mongodb 数据库?