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

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

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

【问题讨论】:

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

标签: sqlite


【解决方案1】:

使用VACUUM command 创建一个有效的空SQLite 数据库文件,包括根database pagedatabase 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
      

      【讨论】:

        猜你喜欢
        • 2021-05-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 2013-08-28
        • 1970-01-01
        • 2011-07-03
        • 1970-01-01
        • 2015-08-17
        相关资源
        最近更新 更多