SQLite | SQLiteコマンド | CSVファイルからデータを取り込む(.importコマンド)
SQLiteではCSVファイルを読み込み、そのデータをテーブルに取り込めます。ここでは、.importコマンドの使い方を説明します。
.importコマンドの使い方
データファイルをテーブルに取り込むには.importを使います。構文は次のとおりです。
.import FILE TABLE
第1引数にファイル名、第2引数に取り込み先のテーブル名を指定します。ファイルは絶対パス、またはSQLite CLIを起動したディレクトリからの相対パスで指定します。
既存テーブルと新規テーブルでは取り込み方法が異なります。
既存テーブルに取り込む
まず、取り込み先のテーブルを作成し、既存データを数行追加します。
create table user (id integer, name text, address text);
insert into user values (1, 'devkuma', 'Seoul');
insert into user values (2, 'kimkc', 'Busan');
sqlite> create table user (id integer, name text, address text);
sqlite>
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (2, 'kimkc', 'Busan');
sqlite>
次のCSVデータを作成し、現在のディレクトリにuserdata.csvとして保存します。
3,araikuma,Seoul
4,happykuma,Seoul
5,mykuma,Daejeon
.modeでCSVモードに切り替えてから、ファイルをuserテーブルに取り込みます。
.mode csv
.import ./userdata.csv user
sqlite> .mode csv
sqlite> .import ./userdata.csv user
sqlite>
取り込み後にuserテーブルを検索します。
select * from user;
sqlite> select * from user;
1,devkuma,Seoul
2,kimkc,Busan
3,araikuma,Seoul
4,happykuma,Seoul
5,mykuma,Daejeon
sqlite>
取り込んだ行が既存データの後に追加されています。
新しいテーブルに取り込む
取り込み先が存在しない場合、SQLiteは新しいテーブルを作成し、CSVの先頭行をカラム名として使用します。
次のCSVデータを作成し、現在のディレクトリにuserdata2.csvとして保存します。
id,name,address
1,devkuma,Seoul
2,kimkc,Busan
3,araikuma,Seoul
CSVモードに切り替え、ファイルを新しいuser2テーブルに取り込みます。
.mode csv
.import ./userdata2.csv user2
sqlite> .mode csv
sqlite> .import ./userdata2.csv user2
sqlite>
user2が作成され、取り込んだデータが保存されます。
.schemaで作成されたテーブルを確認します。
.schema user2
sqlite> .schema user2
CREATE TABLE user2(
"id" TEXT,
"name" TEXT,
"address" TEXT
);
sqlite>
CSVの先頭行がカラム名になり、すべてのカラム型はTEXTです。
次にuser2テーブルを検索します。
select * from user2;
sqlite> select * from user2;
1,devkuma,Seoul
2,kimkc,Busan
3,araikuma,Seoul
sqlite>
CSVの2行目以降がテーブルデータとして保存されています。