是否有任何工具/方法可以生成用于在SQLite中插入数据的数据库脚本?

问题描述 投票:0回答:1

我正在开发一个Android应用程序,该应用程序维护一个具有大约40多个表的SQLite数据库。这些表应该具有预定义的数据,因此我需要在所有表中插入批量数据。我有什么方法可以创建数据插入脚本并像在SQL ServerSQLyog中那样运行它,而不是编写用于在每个表中插入数据的插入数据功能。

我已经对此进行了研究,但找不到任何帮助。有人可以让我知道SQLite Android是否可以做到这一点,或者我必须找到替代方法吗?

任何帮助将不胜感激。

android sqlite android-sqlite sql-insert sqliteopenhelper
1个回答
0
投票

通常,将使用您喜欢的SQLite管理工具(NaviCat,DBeaver,SQlite的DBBrowser等)将预先填充的数据库作为资产填充到数据库中。

[在开发应用程序时,文件(就像所有SQLite数据库一样,是一个文件)然后被复制到资产(如果使用SQLiteAssethelper,则为资产/数据库)文件夹。

  • 其他支持rollbak文件可能存在,但复制数据库时不应该。
  • 很可能必须创建资产文件夹。

首次运行该应用程序时,数据库从资产文件夹复制到它的最终位置,通常(建议)在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行。

© www.soinside.com 2019 - 2024. All rights reserved.