java - 如何在 Java 中首次打开应用程序时创建巨大的 SQlite 数据库

标签 java sqlite

所以我有一个巨大的项目列表(大约 700000 行),我想在第一次制作应用程序时立即将其插入到 SQLite 数据库中。我已经创建了一个方法来检查应用程序是否是第一次制作(使用共享首选项),并创建了一个巨大的要运行的命令列表(一些示例:

sqLiteDatabase.execSQL("INSERT INTO topenings (name,cust,color) VALUES('White - Modern Defense: Ipatov,Alexander - Shtembuliak,E: Pan-Am Intercollegiate 1/2-1/2','d2d4 g7g6 c2c4 f8g7 e2e4 d7d6 b1c3 e7e5 d4d5 a7a5 f1d3 b8a6 g1e2 d8h4 e1g1 g8h6 f2f3 e8g8 d1e1 h4e7 g1h1 c8d7 c1e3 f7f5 e4f5 h6f5 e3f2 a6c5 d3c2 g7h6 e2g3 b7b6 g3f5 g6f5 f3f4 a8e8 f4e5 d6e5 d5d6 c7d6 c3d5 e7g7 d5b6 d7c6 b6d5 c6d5 c4d5 c5d7 a1d1 h6g5 e1a5 e5e4 f2d4 g5f6 d4f6 d7f6 d1e1 e8e5 a5b6 g7e7 a2a4 f6g4 h2h3 g4f6 c2d1 g8h8 a4a5 f8g8 a5a6 f5f4 b6b7 f4f3 b7e7 f3g2 h1h2 g2f1N e1f1 e5e7 f1f6 e4e3 f6e6 e7f7 d1g4 h7h5 g4h5 f7f2 h2h1 g8c8 e6h6 h8g7 h6g6 g7f8 g6g2 c8c1 h1h2 f2d2 h5e2 d2b2 ','White')");

sqLiteDatabase.execSQL("INSERT INTO topenings (name,cust,color) VALUES('Black - Modern Defense: Ipatov,Alexander - Shtembuliak,E: Pan-Am Intercollegiate 1/2-1/2','d2d4 g7g6 c2c4 f8g7 e2e4 d7d6 b1c3 e7e5 d4d5 a7a5 f1d3 b8a6 g1e2 d8h4 e1g1 g8h6 f2f3 e8g8 d1e1 h4e7 g1h1 c8d7 c1e3 f7f5 e4f5 h6f5 e3f2 a6c5 d3c2 g7h6 e2g3 b7b6 g3f5 g6f5 f3f4 a8e8 f4e5 d6e5 d5d6 c7d6 c3d5 e7g7 d5b6 d7c6 b6d5 c6d5 c4d5 c5d7 a1d1 h6g5 e1a5 e5e4 f2d4 g5f6 d4f6 d7f6 d1e1 e8e5 a5b6 g7e7 a2a4 f6g4 h2h3 g4f6 c2d1 g8h8 a4a5 f8g8 a5a6 f5f4 b6b7 f4f3 b7e7 f3g2 h1h2 g2f1N e1f1 e5e7 f1f6 e4e3 f6e6 e7f7 d1g4 h7h5 g4h5 f7f2 h2h1 g8c8 e6h6 h8g7 h6g6 g7f8 g6g2 c8c1 h1h2 f2d2 h5e2 d2b2 ','Black')");
)

(这是我正在制作的一个小型国际象棋应用程序,用于训练空缺)

我制作了一个 python 脚本来创建这些,但是我有数十万条这样的行需要添加到 SQLite 数据库中,并且尝试通过 android 执行它们会返回代码太大错误。有什么办法可以立即创建这个数据库吗?

注意:我对预填充数据库的想法持开放态度,但我尚未创建此 SQlite 数据库,并且没有找到创建此数据库并将其插入应用程序的好方法

最佳答案

查克,

SQLite 数据库文件的最大大小约为 140TB。

https://www.sqlite.org/features.html

https://www.sqlite.org/limits.html

看看这个答案:https://stackoverflow.com/a/14454573/5620039

执行此操作的一种方法是首先创建空数据库。 当应用程序第一次打开时,它将从 webservice/api 返回 700000 行,然后插入到 sqlite 数据库中。

请注意光标的 Android 内存限制。

关于java - 如何在 Java 中首次打开应用程序时创建巨大的 SQlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62400922/

相关文章:

java - 仅 1.8 或更高版本才允许在源代码级别使用 Lambda

java - Scala 脚本引擎创建另一个单例实例

java - 用Java解析这个字符串

python - 为什么在 SQLite3 中同一查询会得到不同的查询计划?

c - 如何导致sqlite3_initialize失败

java - 几个sql请求检索数据(hibernate)

java - 写入 PDF 文件第 2 部分时,图像上绘制的形状会反转

ios - ITMS-90809:不推荐使用的API使用情况(UIWebView)

c# - 我的 SQLite 数据库是在哪里创建的?

c++ - SQLite - 如何在终端级别和 C++ 应用程序中使用它?