从命令行创建空的 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的主要内容,如果未能解决你的问题,请参考以下文章
Linux 系统命令行下,对 SQLite3 数据库使用的一般操作