以前、ネットで見つけた投稿によると
SQLite 3.8.8で、
bulk insert(=一括インポート)最大数
500レコード制限が撤廃
[[ai]SQLite bulk Insert 500レコード制限が無くなってる!]
手持ち端末で調べると
Android 6.0.1端末(Nexus7)が上限撤廃後のSQLite 3.8.10.2
Android6.0.1以降のスマートフォンなら500行制限が無いみたい
では実際、何レコードまで一括インポートできるのかな?
早速、実験
使うのは私のスマートフォン「Pixel 3a」(Android10 : SQLite 3.22.0)
巨大なbulk insertファイルを作り徐々に行数を減らしていくと・・・
27,0708行(17,856,247バイト)でインポート成功!
結果は、270,706レコード
次に、ファイルサイズでのインポートテスト
インポートに成功した270,708行ファイル(17,856,247バイト)に、無意味なtextを書込みファイルサイズ(17,856,314バイト)を増やしても上限がレコード数ならインポートできるはず!?
で、ファイルサイズが増えても
インポート成功!
と言うことで、SQLiteのbluk insert上限は、ファイルサイズ制限ではなく
レコード数制限。その上限は270,706行みたいです。
と思いきや
改めて270,709行目を書き加えて実験すると、あれ、インポート成功!
どういうこと?
バックグランドで動く別アプリの影響とか受けるのかな?
今回の実験、結論が出ない。
テストする度、最大数が変わる!
なぞだ
まぁ、ハンディーターミナル用マスターbulk insertファイル生成プログラムの作り変えは、余裕をもって1ファイル200,000行にすれば安定するのでは
新最大値:200,000行÷旧値:500=400
これで、1ファイルに400倍のレコードが書ける!
マスターファイル生成の度、毎回1,000個近いbulk insertファイル作ってる。
これが3,4ファイルになるはず!
1,000個が4個に!
まるで夢のよう
今月、ドコモ法人契約変更で手に入れた1円スマートフォン
「Galaxy SC-02M」(Android 9.0 : SQLite 3.22.0) x 10台
利用中のAndroid4.x & 5.x & 6.0を新端末に切り替えればマスターインポートファイルを激減できる!
はずだったのに・・・・・・
こっちの方が慣れているから古いの使い続けます
という奴が大勢いるの(泣)