ssCAROのブログ

色んなとこで見つけたプログラムのメモ置き場っぽい

SQLite3へ大量のCSVを一括で取り込む

SQLite3へCSVファイルを取り込むためのスクリプトのメモ

次の必要なファイルを同じフォルダに配置する。

  • sqlite3.exe
  • CSVを取り込む先のテーブル(CSV_DATA)が作成されたDB(Sample.sqlite3)
  • csv_import.bat
  • INPUTフォルダを作成し、取り込む対象のCSVファイルを入れる。

*sqlite3.exeは http://www.sqlite.org/ から sqlite-shell-win32-x86-3090200.zip をダウンロードする。
CSV_DATAテーブルの内容は、DATETIME型、後はREAL型が100個。

csv_import.batを実行すると、OUTPUTフォルダにINPUTフォルダ内のCSVファイルを結合したmerge.csvが作成され、それをDBに取り込む。

csv_import.bat

@ECHO OFF

ECHO DB内のCSVデータを削除
sqlite3 Sample.sqlite3 "delete from CSV_DATA"

ECHO CSVを結合
mkdir .\OUTPUT
type .\INPUT\*.csv > .\OUTPUT\merge.csv

ECHO CSVをDBに取込
sqlite3 -separator , Sample.sqlite3 ".import ./OUTPUT/merge.csv CSV_DATA"

ECHO.
ECHO 処理が完了しました。
ECHO 終了するには何かキーを押してください...
PAUSE > NUL

・取り込むCSVファイルの内容
数値データは、100個あります。

2015/12/01 00:00:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:01:00,     0,     0.2,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:02:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:03:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:04:00,     0,     0.1,     0,     0,     0,     0,     0,     0,   657,     0,     0,     0,     0,     0
2015/12/01 00:05:00,     0,     0.2,     0,     0,     0,     0,     0,     0,   661,     0,     0,     0,     0,     0
2015/12/01 00:06:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:07:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   653,     0,     0,     0,     0,     0
2015/12/01 00:08:00,     0,     0.4,     0,     0,     0,     0,     0,     0,   827,     0,     0,     0,     0,  1000
2015/12/01 00:09:00,     0,     0.3,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000
2015/12/01 00:10:00,     0,     0.4,     0,     0,     0,     0,     0,     0,   830,     0,     0,     0,     0,  1000