【发布时间】:2013-02-09 15:44:16
【问题描述】:
尝试将 SqlCe 数据库转换为 SQLite,我将其导出到 .sql 文件。现在我将如何使用sqlite.exe 从这个.sql 文件创建数据库?
将sql3.exe 文件放在哪里?
在 cmd 提示符或sqlite.exe shell 中使用什么命令语法?
【问题讨论】:
标签: sqlite
尝试将 SqlCe 数据库转换为 SQLite,我将其导出到 .sql 文件。现在我将如何使用sqlite.exe 从这个.sql 文件创建数据库?
将sql3.exe 文件放在哪里?
在 cmd 提示符或sqlite.exe shell 中使用什么命令语法?
【问题讨论】:
标签: sqlite
使用以下命令行:
sqlite3 -init dump.sql newsqlite.db ""
它将通过执行来自dump.sql 的语句来创建新的SQLite 数据库文件newsqlite.db。 sqlite3自动退出需要空字符串""。
如果newsqlite.db 文件已经存在一些数据,导入可能会失败,除非您对所有表和索引创建语句使用IF NOT EXISTS。
【讨论】:
-- Loading resources from script.sql 然后Error: incomplete SQL: |-(| 成为一个矩形),而同一命令的 sqlite3.exe shell 只给我一个新行...> 无论哪种方式都没有太多错误消息,没有行号,什么都没有。这是典型的吗?
script.sql 必须有效 - 显然不是。我建议逐行调试你的脚本。在 Windows 中,您应该安装 SQLite Expert Personal 并使用此 GUI 仔细调试您的脚本 - 其中有问题。
把sqlite3.exe放在任何你想要的地方,只要你记得那个地方并且你可以从那里开始sqlite3。
在命令提示符中将脚本应用于数据库(可能是新创建的):
sqlite3.exe my-new-db.somesuffix < myscript.sql
在交互式sqlite3 会话中执行脚本:
sqlite3.exe my-new-db.somesuffix
....
.read myscript.sql
....
这两种变体有时都是有效且可用的。 (注意:如果您的.sql 是为非sqlite 数据库生成的,我希望它需要进行一些更改才能在sqlite3 中工作。存储过程和用户定义函数之类的东西肯定会丢失)。
【讨论】:
Error: incomplete SQL: |-,而从 sqlite3 shell 中,它只是在按下回车时提供了更多的....> 行,没有消息。无论如何都没有创建任何数据库文件。这就是我对错误消息的期望吗?
incomplete SQL 可能是sqlite和你的源数据库的语法差异造成的,不看代码是解决不了的。从 sqlite shell 中的....> 提示符开始,我认为您在read 之前省略了前导点。它应该是.read 而不仅仅是read。 (为什么每个提问的人都对编辑答案中提供的命令感到如此自信?)
select 1 as result 这样的无操作语句——但它可以是大小为 0 的文件)。如果您愿意,您可以使用现有的空数据库,但每次调试脚本时最好从头开始(否则您将不得不解决先前尝试中已经存在的对象的问题:添加 DROP TABLE IF EXISTS... before每个CREATE TABLE等)。