SQLite/SQLiteでCSVを投入(インポート)する方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* SQLiteでCSVを投入(インポート)する方法 [#i31403bb]
SQLite3を使って、csvファイルをテーブルにインポートする操...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* 使用した環境 [#f461eca4]
本資料の動作確認は以下の環境で行いました。
-OS~
--Ubuntu 16.04.4 LTS
--Debian GNU/Linux 9.4 (stretch)
-SQLite3~
--3.11.0 2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5...
--3.16.2 2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf...
* インポートを行うための準備環境 [#tb7737fb]
CSVをSQLiteに投入するために、CSVファイルの準備とCREATE TA...
-作成したテーブル
CREATE TABLE t1 (
ID,
NAME,
CODE
);
-準備したcsvファイル~
&ref(cc.csv); (改行コードLF)
1,"Bitcoin","BTC"
2,"Ethereum","ETH"
3,"Bitcoin Cash","BCH"
4,"Litecoin","LTC"
5,"Shield","XSH"
* csvファイルを投入する [#k4fa339e]
以下の操作により、csvファイルをインポートすることができま...
+ 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>
+ csv投入用のテーブルを作成する
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''がパイプ''|''になっています...
これをカンマ(,)に変更します。
+ 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''が'',''に変更されているのが確認できます。
+csvファイルを投入します
.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|XSH
csvが投入されているのが確認できました。
+ sqlite3を終了します。
sqlite> .quit
* コマンドラインから直接投入する方法 [#i56871eb]
コマンドラインからSQLiteにcsvファイルの内容をインポートす...
+データベースとテーブルを作成します
sakura@debian:~$ sqlite3 direct.sqlite3 "CREATE TABLE t1...
+ -separatorにカンマ(,)を指定し、.importでcsvファイルを取...
sakura@debian:~$ sqlite3 direct.sqlite3 -separator , ".i...
+ 取り込みされているかの確認です
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について [#l83e3f51]
.separatorについて確認すると、以下のようになっています。
$ man sqlite3
<省略>
.separator STRING ?NL? Change separator used by output ...
NL is the end-of-line mark for...
<省略>
構文は以下のようになります。
.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をインポートする操作例でした。
#htmlinsertpcsp(db-btm.html,db-sp.html)
終了行:
#navi(../)
* SQLiteでCSVを投入(インポート)する方法 [#i31403bb]
SQLite3を使って、csvファイルをテーブルにインポートする操...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* 使用した環境 [#f461eca4]
本資料の動作確認は以下の環境で行いました。
-OS~
--Ubuntu 16.04.4 LTS
--Debian GNU/Linux 9.4 (stretch)
-SQLite3~
--3.11.0 2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5...
--3.16.2 2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf...
* インポートを行うための準備環境 [#tb7737fb]
CSVをSQLiteに投入するために、CSVファイルの準備とCREATE TA...
-作成したテーブル
CREATE TABLE t1 (
ID,
NAME,
CODE
);
-準備したcsvファイル~
&ref(cc.csv); (改行コードLF)
1,"Bitcoin","BTC"
2,"Ethereum","ETH"
3,"Bitcoin Cash","BCH"
4,"Litecoin","LTC"
5,"Shield","XSH"
* csvファイルを投入する [#k4fa339e]
以下の操作により、csvファイルをインポートすることができま...
+ 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>
+ csv投入用のテーブルを作成する
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''がパイプ''|''になっています...
これをカンマ(,)に変更します。
+ 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''が'',''に変更されているのが確認できます。
+csvファイルを投入します
.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|XSH
csvが投入されているのが確認できました。
+ sqlite3を終了します。
sqlite> .quit
* コマンドラインから直接投入する方法 [#i56871eb]
コマンドラインからSQLiteにcsvファイルの内容をインポートす...
+データベースとテーブルを作成します
sakura@debian:~$ sqlite3 direct.sqlite3 "CREATE TABLE t1...
+ -separatorにカンマ(,)を指定し、.importでcsvファイルを取...
sakura@debian:~$ sqlite3 direct.sqlite3 -separator , ".i...
+ 取り込みされているかの確認です
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について [#l83e3f51]
.separatorについて確認すると、以下のようになっています。
$ man sqlite3
<省略>
.separator STRING ?NL? Change separator used by output ...
NL is the end-of-line mark for...
<省略>
構文は以下のようになります。
.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をインポートする操作例でした。
#htmlinsertpcsp(db-btm.html,db-sp.html)
ページ名: