SQLite3を使って、csvファイルをテーブルにインポートする操作例を以下に記します。
本資料の動作確認は以下の環境で行いました。
CSVをSQLiteに投入するために、CSVファイルの準備とCREATE TABLEを行いました。
CREATE TABLE t1 ( ID, NAME, CODE );
1,"Bitcoin","BTC" 2,"Ethereum","ETH" 3,"Bitcoin Cash","BCH" 4,"Litecoin","LTC" 5,"Shield","XSH"
以下の操作により、csvファイルをインポートすることができます。
sqlite3 importdb.sqlite3以下、実行時の出力です。
sakura@debian:~$ sqlite3 importdb.sqlite3 SQLite version 3.16.2 2017-01-06 16:32:41 Enter ".help" for usage hints. sqlite>
CREATE TABLE t1 ( ID, NAME, CODE );以下、実行時の出力です。
sqlite> CREATE TABLE t1 ( ...> ID, ...> NAME, ...> CODE ...> ); sqlite>
.show以下、実行時の出力です。
sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: filename: importdb.sqlite3 sqlite>本出力にある、colseparatorがパイプ|になっています。
.separator ,以下、実行時の出力です。
sqlite> .separator , sqlite>
sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "," rowseparator: "\n" stats: off width: filename: importdb.sqlite3 sqlite>colseparatorが,に変更されているのが確認できます。
.import ファイル名 テーブル名以下、実行時の出力です。
sqlite> .import ./cc.csv t1 sqlite>
sqlite> SELECT * FROM t1; 1,Bitcoin,BTC 2,Ethereum,ETH 3,Bitcoin Cash,BCH 4,Litecoin,LTC 5,Shield,XSH sqlite>
sqlite> SELECT * FROM t1; 1|Bitcoin|BTC 2|Ethereum|ETH 3|Bitcoin Cash|BCH 4|Litecoin|LTC 5|Shield|XSH sqlite> SELECT ID,CODE FROM t1; 1|BTC 2|ETH 3|BCH 4|LTC 5|XSHcsvが投入されているのが確認できました。
sqlite> .quit
コマンドラインからSQLiteにcsvファイルの内容をインポートする手順を以下に記します。
sakura@debian:~$ sqlite3 direct.sqlite3 "CREATE TABLE t1 (ID, NAME, CODE);"
sakura@debian:~$ sqlite3 direct.sqlite3 -separator , ".import ./cc.csv t1"
sakura@debian:~$ sqlite3 direct.sqlite3 "select * from t1" 1|Bitcoin|BTC 2|Ethereum|ETH 3|Bitcoin Cash|BCH 4|Litecoin|LTC 5|Shield|XSH
.separatorについて確認すると、以下のようになっています。
$ man sqlite3 <省略> .separator STRING ?NL? Change separator used by output mode and .import NL is the end-of-line mark for CSV <省略>
構文は以下のようになります。
.separator セパレータ文字列 改行
つまり、.showで表示されるcolseparatorとrowseparatorに対応します。
.separator colseparator rowseparator
以下、実際に行セパレータ(rowseparator)を設定した例になります。
sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: filename: foo.sqlite3
sqlite> .separator , "\r\n" sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "," rowseparator: "\r\n" stats: off width: filename: foo.sqlite3尚、引数を与えず、.separatorを実行すると、使用方法が表示されます。
sqlite> .separator Usage: .separator COL ?ROW?出力の通り、COLは必須ですが、ROWは任意です。
以上、SQLiteでCSVをインポートする操作例でした。