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行目以降がテーブルデータとして保存されています。