0

所以,出于某种原因,我的 sqlite 数据库有点问题。我正在尝试将我的数据库转储到可以在 Titanium 中使用的文件中。我知道该.dump命令,但是当我尝试使用 sqlite 网站上的说明时:

制作数据库存档副本的一个好方法是:

$ echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz

并将其更改ex1.dump.gzex1.sqlite.gz,它会提供一个非常混乱的文件,它是无用的。如何转储我的数据库,以便我可以在我的 Titanium Studios 移动应用程序中使用它?

4

2 回答 2

1

当您可以简单地复制数据库文件时,为什么要转储它,即按原样使用它?

正如这里所解释的,sqlite 数据库是跨平台的:

SQLite 中的数据库是单个磁盘文件。此外,文件格式是跨平台的。在一台机器上创建的数据库可以复制并在具有不同架构的不同机器上使用。SQLite 数据库可跨 32 位和 64 位机器以及在大端和小端架构之间移植。

另一方面,您应该能够像这样转储、压缩您的数据库:

echo '.dump' | sqlite3 foo.db | gzip -c > foo.dump.gz

并将其还原到新的 SQLite 数据库中:

gunzip -c foo.dump.gz | sqlite3 foo.new.db
于 2012-09-03T17:38:07.613 回答
1

.dump将数据库的内容导出为一系列插入语句。如果你在没有gzip命令的情况下运行它,你会看到纯文本 sql:

$ echo '.dump' | sqlite3 ex1

但是您不需要这样做就可以在 Titanium Studios 中使用 SQLite 数据库。它原生支持 SQLite。只需将数据库文件复制到您的项目目录,然后使用如下代码打开它:

var db = Ti.Database.install('../products.sqlite','products');  

var rows = db.execute('SELECT DISTINCT category FROM products');  

更多细节在这里:

http://mobile.tutsplus.com/tutorials/appcelerator/titanium-mobile-database-driven-tables-with-sqlite/

于 2012-09-03T18:18:53.797 回答