从命令行创建空的 sqlite db

Posted

技术标签:

【中文标题】从命令行创建空的 sqlite db【英文标题】:Create empty sqlite db from command line 【发布时间】:2013-11-22 22:27:47 【问题描述】:

是否可以从命令行创建一个空的 sqlite3 数据库(例如 sqlite3 <someoption> dbname),这将为我创建一个没有任何表的数据库文件,以便我可以从不同的 SQL 编辑器访问它?

目前,当我执行 sqlite3 dbname 时,我会收到一个 sqlite 提示,我可以从中执行 CREATE TABLE ... 但如果我不这样做,当我退出时,不会创建任何文件。所以我正在寻找一个命令,它可以为我创建一个空数据库,而无需在该步骤中创建至少一个表。

【问题讨论】:

你的意思是在 iPhone 上创作?如果您正在寻找初始化数据库,请查看raywenderlich.com/12170/… sqlite3 a.db "" 创建空文件 【参考方案1】:

使用VACUUM command 创建一个有效的空SQLite 数据库文件,包括根database page 和database header。

sqlite3 file.db "VACUUM;"

【讨论】:

试过这个和选择的答案 - 这是一半大小!【参考方案2】:

我认为没有办法只用一个语句来做到这一点。

在 Linux 中,我会以这种方式解决它:

sqlite3 aFile.db "create table aTable(field1 int); drop table aTable;"

这将自动创建包含表的所需文件,然后将其删除,使数据库文件没有表。这是我所知道的最接近的事情。

无论如何,我认为大多数编辑器甚至会接受一个空文件。试试看吧。

【讨论】:

这会创建一个空文件 - 因此,所有编辑器都必须接受一个空文件 实际上也可以用一个命令来完成。请参阅下面的答案。 是的,可以。但在 2013 年的稳定版本中,当被问到这个问题时,它可能并没有出现。 5年后你回答了:)【参考方案3】:

您也可以在进入命令提示符时调用 .databases。

或者:

sqlite3 test.db ".databases"

【讨论】:

【参考方案4】:

简单的方法是在bash中,使用命令

touch file.db

这只会创建一个 0 大小的文件,可以用作空的 sqlite 文件。

【讨论】:

【参考方案5】:

只需创建一个空文件。

> test.db

符号“>”在这里表示重定向。

【讨论】:

这实际上有效并且与上面所有复杂的答案相同。为了将来的兼容性,您可能会使用“.databases”...【参考方案6】:

像这样创建一个空白数据库(由mosty-mostacho 提供)具有被识别为有效SQLite 数据库的优势;比空文件好。

$sqlite3 foo.db "create table t(f int); drop table t;"

通过以下方式验证:

$file foo.db 
foo.db: SQLite 3.x database, last written using SQLite version 3024000

【讨论】:

以上是关于从命令行创建空的 sqlite db的主要内容,如果未能解决你的问题,请参考以下文章

从 SQLite DB 动态创建 ListView 行

Linux 系统命令行下,对 SQLite3 数据库使用的一般操作

android sqlite3命令行检查自己的代码操作数据库是否正确

SQLite 删除特定行不起作用

ios设备和sqlite3命令行的sqlite区别

错误:文件已加密或不是数据库