从文本文件更新sqlite数据库

时间:2013-08-06 19:51:08

标签: android database sqlite updates

我是数据库开发的新手,对不起,如果这不方便问。我正在开发一个Android应用程序,其数据库有一个包含数千个条目的表。此表是从后端Oracle数据库生成的,每次在Android应用程序上单击更新按钮时,都必须使用后端数据库中的更改进行更新。

我提出的程序在这里:

  1. 通过每三个小时运行一次SQL脚本从Oracle数据库生成一个文本文件。

  2. 每次需要时,Android应用程序都会下载此文本文件,转储旧表,并将其解析到新表中。

  3. 我的问题是,由于文本文件很大,有数千行(大约5MB),下载和解析需要很长时间,但需要(几乎)瞬间完成。

    我的问题是:

    1. 是否有更好的方法可以有效地从Oracle后端更新SQLite数据库?

    2. 由于解析时间过长,有没有办法设置SQLite来处理文本文件,跳过解析?

2 个答案:

答案 0 :(得分:2)

如果可能,您应该公开连接到数据库的Web服务,而不是每次都下载整个内容。此Web服务应具有GET方法,该方法允许您查询在指定时间内更新的行。在您的Android应用程序中,您可以保留每次更新的日期,然后Web服务调用将限制基于此WHERE子句返回的行。有点像这样:

SELECT MT.* FROM MY_TABLE AS MT
WHERE MT.last_modified > last_requested_time;

这允许您只下载更新。在Android应用程序中获得更新后,您可以对SQLite引擎进行SQL调用,并根据主键更新必要的行。

关于你的第二个问题,我不认为基于文件的加载是正确的方法(在初始加载之后),因为它会导致大量的移动数据被消耗,加上它会产生很高的CPU负载在手机上不适合手机。

答案 1 :(得分:0)

我认为如下: 1 - 我在服务器端运行一个脚本,生成csv格式的表,这些表由android app使用;
2 - 和另一个导入csv数据并创建SQLite数据库的脚本。 3 - android应用程序检查服务器是否有更新的数据库。如果存在,则会下载该应用并将其提供给应用,因为它已解释为here