使用PHP将MySQL查询输出为SQLite

时间:2013-07-26 12:05:35

标签: php mysql ios sqlite

我们有一个iOS应用程序,必须从远程服务器(JSON格式)下载大量用户数据,然后将此数据插入本地SQLite数据库。由于数据太多,插入过程需要5分钟以上才能完成,这是不可接受的。这个过程必须少于30秒。

我们已经确定了一个潜在的解决方案:让远程服务器将用户的数据存储在SQLite数据库中(在远程机器上)。该数据库被压缩,然后由应用程序下载。因此,应用程序不必进行任何数据插入,从而使该过程更快。

我们的远程服务器正在运行PHP / MySQL。

我的问题:

  • 在远程服务器上创建SQLite数据库的最快且最有效方式是什么?
  • 是否可以直接将MySQL查询输出到SQLite表中?
  • 是否可以创建临时MySQL数据库,然后将其转换为SQLite格式?
  • 或者我们是否必须接受MySQL查询输出并将每条记录插入SQLite数据库?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为最好先了解为什么插入过程需要5分钟。

如果在SQLite中没有正确执行,则每个insert语句都将在单独的事务中执行。这已知非常慢。在单个SQLite事务中执行所有插入操作要好得多。这应该使插入过程非常快,即使你在谈论很多记录。

在伪代码中,您需要以下内容:

SQLite.exec('begin transaction');
for (item in dataToInsert) {
    SQLite.exec('insert into table values ( ... )');
}
SQLite.exec('end transaction');

如果您想从PHP创建SQLite数据库,那么同样适用。

你可以在这里阅读很多相关内容:Improve INSERT-per-second performance of SQLite?