我正在开发一个Android应用程序,该应用程序维护一个具有大约40多个表的SQLite数据库。这些表应该具有预定义的数据,因此我需要在所有表中插入批量数据。我有什么方法可以创建数据插入脚本并像在SQL Server和SQLyog中那样运行它,而不是编写用于在每个表中插入数据的插入数据功能。
我已经对此进行了研究,但找不到任何帮助。有人可以让我知道SQLite Android是否可以做到这一点,或者我必须找到替代方法吗?
任何帮助将不胜感激。
通常,将使用您喜欢的SQLite管理工具(NaviCat,DBeaver,SQlite的DBBrowser等)将预先填充的数据库作为资产填充到数据库中。
[在开发应用程序时,文件(就像所有SQLite数据库一样,是一个文件)然后被复制到资产(如果使用SQLiteAssethelper,则为资产/数据库)文件夹。
首次运行该应用程序时,数据库从资产文件夹复制到它的最终位置,通常(建议)在data / data / the_package / databases /中。请参见上面的SQLiteAssetHelper链接,该链接代表您执行此操作。
以上可能是明智的最有效启动方式,尽管该应用程序会有点膨胀,因为将存在两个数据库副本。
您可以从文件构建数据。这些可能是JSON / GSON,CSV甚至是SQL,例如从您的SQLite管理工具(或也许从其他数据库工具)导出。
[您可以,如果需要的数据允许使用SQL构建数据来动态生成数据,例如。
WITH cte(cnt,ts,sid,t,p) AS
(
SELECT
1,
'1971-01-01 00:00:00',
1,
(ABS(random()) % 3000) / 99.35
, ABS(random()) % 25 / 99.35
AS b
UNION ALL
SELECT
cnt + 1,
datetime('1971-01-01 00:00:00','+'||(cnt / 96)||' days','+'||((cnt / 4) % 24)||' hours'),
((cnt % 4) +1),
(ABS(random()) % 3000) / 99.35
, ABS(random()) % 25 / 99.35
FROM cte AS d
LIMIT 8760 * 4 * 10
)
-- SELECT * FROM cte;
INSERT INTO log SELECT ts,sid,t,p FROM cte;
;
这将构建10年中每年每小时的数据,每小时4行。即350,400行。