スポンサードリンク

CSVファイルを配列へ取込、データベースへ高速Insert

前回CSVファイルを全件一括で取り込もうして失敗してしまいました。

www.excellovers.com

コメントで「1行ずつ配列にいれてみては」とアドバイスを頂きましたので、実践してみました。

高速かつ手間いらず

データ量:566,401×70のCSVファイル。213MB。

処理方法 処理時間
CSVインポート→ExcelからSQLiteへInsert 255.29秒
CSVから配列へ転記→配列からSQLiteへInsert 計測不可
CSVファイルから一行読み込み配列へ→配列からSQLiteへInsert、1行毎にループ処理 118.67秒

今回も盛大にネタバレをしていますが、CSVを「1行ずつ配列取込→Insert」行うと2分弱で終了!

メリットは速いだけではありません

・1行処理ごとに配列を上書きしているためメモリを大量に消費しない

・2つの処理を1つにまとめたので、1つ目の処理が終わったかなぁと意識しなくて良い。

配列を使って高速化しようとしてした失敗を挽回出来たかな。

まとめ

CSVからの取り込みに関しては使い分けの必要がなくなるので、一行毎に配列へ取込→Insertで良いんじゃなかろうか。

トライして失敗して教えていただけたことで、自分の中に新しく定跡が作れた気がします。