如何使用 sqlite3.exe 从导出的 .sql 脚本创建数据库

Posted

技术标签:

【中文标题】如何使用 sqlite3.exe 从导出的 .sql 脚本创建数据库【英文标题】:How to use sqlite3.exe to create database from exported .sql script 【发布时间】:2013-02-09 15:44:16 【问题描述】:

尝试将 SqlCe 数据库转换为 SQLite,我将其导出到 .sql 文件。现在我将如何使用sqlite.exe 从这个.sql 文件创建数据库?

sql3.exe 文件放在哪里? 在 cmd 提示符或sqlite.exe shell 中使用什么命令语法?

【问题讨论】:

【参考方案1】:

使用以下命令行:

sqlite3 -init dump.sql newsqlite.db ""

它将通过执行来自dump.sql 的语句来创建新的SQLite 数据库文件newsqlite.db。 sqlite3自动退出需要空字符串""

如果newsqlite.db 文件已经存在一些数据,导入可能会失败,除非您对所有表和索引创建语句使用IF NOT EXISTS

【讨论】:

干杯!尽管如此,cmd 提示符还是给了我消息:-- Loading resources from script.sql 然后Error: incomplete SQL: |-(| 成为一个矩形),而同一命令的 sqlite3.exe shell 只给我一个新行...> 无论哪种方式都没有太多错误消息,没有行号,什么都没有。这是典型的吗? 为此,您的script.sql 必须有效 - 显然不是。我建议逐行调试你的脚本。在 Windows 中,您应该安装 SQLite Expert Personal 并使用此 GUI 仔细调试您的脚本 - 其中有问题。 非常感谢您提供空字符串的提示!我花了大约。 4小时找到这个。为什么这没有为 Windows 用户正确记录?如果我理解语法正确,那么自动化任务就像这样: sqlite3.exe -init "[scriptname]" "[databasename]" ""【参考方案2】:

sqlite3.exe放在任何你想要的地方,只要你记得那个地方并且你可以从那里开始sqlite3

在命令提示符中将脚本应用于数据库(可能是新创建的):

sqlite3.exe my-new-db.somesuffix < myscript.sql

在交互式sqlite3 会话中执行脚本:

sqlite3.exe my-new-db.somesuffix
....
.read myscript.sql
....

这两种变体有时都是有效且可用的。 (注意:如果您的.sql 是为非sqlite 数据库生成的,我希望它需要进行一些更改才能在sqlite3 中工作。存储过程和用户​​定义函数之类的东西肯定会丢失)。

【讨论】:

谢谢!所以从 cmd 我得到Error: incomplete SQL: |-,而从 sqlite3 shell 中,它只是在按下回车时提供了更多的....&gt; 行,没有消息。无论如何都没有创建任何数据库文件。这就是我对错误消息的期望吗? incomplete SQL 可能是sqlite和你的源数据库的语法差异造成的,不看代码是解决不了的。从 sqlite shell 中的....&gt; 提示符开始,我认为您在read 之前省略了前导点。它应该是.read 而不仅仅是read。 (为什么每个提问的人都对编辑答案中提供的命令感到如此自信?) 我没有编辑你的命令,但也许我没有正确使用它们。我应该在运行这些命令之前创建数据库吗?我似乎没有创建一个空数据库,或者在执行你在 sqlite3 会话中给出的第一行时不应该发生这种情况吗?或者如何从cmd创建一个空数据库? 数据库是在单个 成功 sql 语句之后创建的(即使是像 select 1 as result 这样的无操作语句——但它可以是大小为 0 的文件)。如果您愿意,您可以使用现有的空数据库,但每次调试脚本时最好从头开始(否则您将不得不解决先前尝试中已经存在的对象的问题:添加 DROP TABLE IF EXISTS... before每个CREATE TABLE等)。

以上是关于如何使用 sqlite3.exe 从导出的 .sql 脚本创建数据库的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 如何导出.sqlite的数据库

如何使用单个脚本自动打开 sqlite3.exe shell 并运行命令?

如何用plsql从oracle中导入导出数据

在 Windows 中使用命令行 shell 创建 sqlite 数据库

vs2010下使用sqlite

sqlite3.exe 使用教程