前回CSVファイルを全件一括で取り込もうして失敗してしまいました。
コメントで「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で良いんじゃなかろうか。
トライして失敗して教えていただけたことで、自分の中に新しく定跡が作れた気がします。