• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLITEでCSVインポート方法)

SQLITEでCSVインポート方法

このQ&Aのポイント
  • SQLITEのデータベースにCSVをインポートする方法について
  • Access VBAを利用してCSVをインポートする方法とその問題点
  • CSVをデータベースに高速に取り込む方法について

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

SQLiteは、insert文1つに、1行のデータしか書けないので、万を超えると結構たいへんですね。 defaultではtransaction off で、1行insertの度に、ファイル書き換えが発生するのでとても遅くなります。 transaction を使うと、on memory で複数回insertして最後にcommit時にファイル書き込みしますので、格段に速くなります。rollback すると、ファイルに書き込まずにデータが破棄されます。 あまり大量の処理はしたことがないのですが、千行(500K byte)くらいならcsv読みとり時間+1Mの書き込み時間程度で出来たと思います(phpのPDO接続利用時)。万を超えると、メモリーの容量問題になってくるかもしれません。 SQL文でtransaction 実行するには以下参照。 http://net-newbie.com/sqlite/lang.html#transaction AccessVBAの方は、使ったこと無いけど、ご呈示ページの最後にtransaction利用法が載ってますね。SQLite接続の時も、BeginTrans メソッドってうまく機能してるのかな? あと、SQLite3では、完全一括実行は、コマンドラインツールでしか出来ません。 http://www.sqlite.org/ からツールをダウンロードしてインストールする必要があります。 インストール解説ページは以下 http://www.dbonline.jp/sqliteinstall/install/index1.html ツールを起動して、importコマンドを利用します。 http://www.dbonline.jp/sqlite/manage/index2.html

mellow91
質問者

お礼

>transaction を使うと、on memory で複数回insertして最後にcommit時にファイル書き込みしますので、格段に速くなります。 こんな方法があったとは知りませんでした、さっそく試してみます。 コマンドラインで一括インポートすることもできるのですね。VBAでなんらかのコードを作って、コマンドラインに渡して.importしたら何となくできそうな気もします。こちらも試してみます!ありがとうございます!

関連するQ&A