Google検索で見つけたSQLite3.8.8からbulkインポートのレコード数制限が無くなった投稿
since version 3.8.8,the number of rows in a VALUES clause is no longer limited by SQLITE_LIMIT_COMPOUND_SELECT.
500レコード制限ありの今のインポートプログラム開発
とっても苦労したんですよ
パソコン側で、各種マスターを500行ごとでInsert文を作り、出来た数百ファイルをUTFエンコードしZIP圧縮、そしてFTPアップロード
アプリ側で
- FTPダウンロード
- ZIP解凍
- 解凍フォルダー内をls
- 見つけたファイルをForループでReadしながらSQLを実行
- ファイルが有るだけ繰り返す
実際のプログラムがこれ。(これでも随分シンプルになったバージョン)
開発当初、AppyBuilderにFTP & File & ZIP機能が無くhttpダウンロード+インポートをForでループさせる仕様でとっても不安定。
エラー出まくりの為、Forループを前半・中盤・後半に3分割、タイマーで開始時間をずらし実行させてました。
今回作ったレコード数制限撤廃版のbulkインポートプログラムがこれ
なんてシンプル!
※SQL.RunQueryをlblPrice.textに繋いでる深い意味は無いです。成功ならTrueと書かれます。
ちなみに、今回のテストデータはこんなSQL文
insert into m_item(itemcd,itemname,itemprice)
values(“1111″,”商品1だよ”,100),
(“2222″,”商品2だよ”,200),(“3333″,”商品3だよ”,300)
検証用の数千レコードのSQL文はAccessクエリで作成
Accessクエリのデータシートビューをテキストファイルへコピペ
先頭にinsert into m_item(itemcd,itemname,itemprice)valuesを付け
最終行のカンマを消せばSQLの完成!
あぁ、後一つ、このファイルをUTF-8で保存。
今回、4000行のインポートに成功!
次は20000行のファイルを作ってテストしてみます。