我是数据库开发的新手,对不起,如果这不方便问。我正在开发一个Android应用程序,其数据库有一个包含数千个条目的表。此表是从后端Oracle数据库生成的,每次在Android应用程序上单击更新按钮时,都必须使用后端数据库中的更改进行更新。
我提出的程序在这里:
通过每三个小时运行一次SQL脚本从Oracle数据库生成一个文本文件。
每次需要时,Android应用程序都会下载此文本文件,转储旧表,并将其解析到新表中。
我的问题是,由于文本文件很大,有数千行(大约5MB),下载和解析需要很长时间,但需要(几乎)瞬间完成。
我的问题是:
是否有更好的方法可以有效地从Oracle后端更新SQLite数据库?
由于解析时间过长,有没有办法设置SQLite来处理文本文件,跳过解析?
答案 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