[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レコード

次に、ファイルサイズでのインポートテスト

インポートに成功した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台

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



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

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

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

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

コメントを残す

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

CAPTCHA