[ai]最大レコード数制限が撤廃されたbulkインポートプログラム

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.

SQLite 500行の壁が無くなったと書かれた掲示板

500レコード制限ありの今のインポートプログラム開発
とっても苦労したんですよ

パソコン側で、各種マスターを500行ごとでInsert文を作り、出来た数百ファイルをUTFエンコードしZIP圧縮、そしてFTPアップロード
アプリ側で

  1. FTPダウンロード
  2. ZIP解凍
  3. 解凍フォルダー内をls
  4. 見つけたファイルをForループでReadしながらSQLを実行
  5. ファイルが有るだけ繰り返す

実際のプログラムがこれ。(これでも随分シンプルになったバージョン)
開発当初、AppyBuilderにFTP & File & ZIP機能が無くhttpダウンロード+インポートをForでループさせる仕様でとっても不安定。
エラー出まくりの為、Forループを前半・中盤・後半に3分割、タイマーで開始時間をずらし実行させてました。


今回作ったレコード数制限撤廃版のbulkインポートプログラムがこれ

なんてシンプル!

※SQL.RunQueryをlblPrice.textに繋いでる深い意味は無いです。成功ならTrueと書かれます。
[AppyBuilderExtension]TableViewの勉強:プログラム


ちなみに、今回のテストデータはこんなSQL文

insert into m_item(itemcd,itemname,itemprice)
values(“1111″,”商品1だよ”,100),
(“2222″,”商品2だよ”,200),(“3333″,”商品3だよ”,300)

検証用の数千レコードのSQL文はAccessクエリで作成
[AppyBuilderExtension]TableViewの勉強:テストデータはAccessクエリで

Accessクエリのデータシートビューをテキストファイルへコピペ
先頭にinsert into m_item(itemcd,itemname,itemprice)valuesを付け
最終行のカンマを消せばSQLの完成!
あぁ、後一つ、このファイルをUTF-8で保存。
[AppyBuilderExtension]TableViewの勉強


今回、4000行のインポートに成功!

次は20000行のファイルを作ってテストしてみます。

コメントを残す

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