[SQLite]Bulk insert最大レコード数は約270,000行

以前、ネットで見つけた投稿によると

SQLite 3.8.8で、
bulk insert(=一括インポート)最大数
500レコード制限が撤廃

SQLite 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,0709行(17,856,314バイト)までエラー!

インポートエラーでは無くアプリごとクラッシュが続きました
27,0709行(17,856,314バイト)までエラーが続く・・


27,0708行(17,856,247バイト)でインポート成功!



INSERTコマンド部2行マイナスし

結果は、270,706レコード

ちなみに、成功した27,0708行ファイル(17,856,247バイト)に文字を書込みエラーファイルサイズ(17,856,314バイト)を超えさせインポートテストすると

これもインポート成功!

と言うことはSQLファイルサイズ制限ではなく
レコード数制限が最大値270,706行みたいです。

と思いきや

改めて270,709行目を書き加えて実験するとインポート成功!

どういうこと?

バックグランドで動く別アプリの影響とか受けるのかな?

今回の実験、結論が出ない。
テストする度、数十行最大数が変わるんです!
なぞだ

まぁ、ハンディーターミナル用マスターbulk insertファイル生成プログラムの作り変えは、余裕をもって1ファイル200,000行にすれば安定するのでは

新最大値:200,000行÷旧値:500=400
これでも今の400倍!

マスターファイル生成の度、毎回1,000個近いbulk insertファイル作ってる。
これが3,4ファイルになるはず!

1,000個が4個に!
まるで夢のよう

今月、ドコモ法人契約変更で手に入れた1円スマートフォン
「Galaxy SC-02M」(Android 9.0 : SQLite 3.22.0) x 10台

ハンディーターミナル10台の総額が10円!



利用中のAndroid4.x & 5.x & 6.0を新端末に切り替えればマスターインポートファイルを激減できる!

はずだったのに・・・・・・

こっちの方が慣れているから古いの使い続けます

という奴が大勢いるの(泣)

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA