CSV形式のデータをファイルからインポート(.importコマンド)

外部のファイルにCSV形式でデータを記述しておき、 SQLite から読み込んでテーブルにインポートすることができます。ここでは SQLite における .import コマンドを使ってデータをインポートする方法について解説します。

(Last modified: )

.importコマンドの使い方

データが書き込まれたファイルからテーブルにデータを読み込むには .import コマンドを使用します。書式は次の通りです。

.import FILE TABLE

1番目の引数にファイル名、2番目の引数に読み込んだデータを追加するテーブル名を指定します。ファイル名は SQLite のコマンドラインツールを実行したカレントディレクトリからの相対パス又は絶対パスで指定して下さい。

インポートする場合は既存のテーブルにインポートする場合と存在しないテーブルにインポートする場合で挙動が異なります。それぞれ見ていきます。

既存のテーブルにインポートする

最初に既存のテーブルにインポートする場合です。次のようなテーブルをあらかじめ作成しておき、データも少し格納してあります。

create table staff(id integer, name text, address text);

insert into staff values(1, 'Kuroda', 'Tokyo'); insert into staff values(2, 'Oota', 'Osaka');

既存のテーブルにインポートする(1)

次にインポートするデータを用意します。データは CSV 形式で作成しておきます。作成したファイルはカレントディレクトリに userdata.csv として保存しました。

3,Gotou,Kyoto
4,Watari,Tokyo
5,Andou,Chiba

ファイルを staff テーブルにインポートします。インポートする前に .mode コマンドを使って csv モードに変更してください。そのあとで .import コマンドを次のように実行します。

.mode csv
.import ./userdata.csv staff

既存のテーブルにインポートする(2)

インポートしたあとに SELECT 文で staff テーブルのデータを確認してみます。

select * from staff;

既存のテーブルにインポートする(3)

既存のデータに追加する形でインポートしたデータがテーブルに格納されています。

存在していないテーブルにインポートする

存在していないテーブルにインポートしようとした場合、少し挙動が異なります。新しいテーブルが作成されるのですが、インポートしたデータの最初の行に書かれている値がカラム名となります。

例えば次のようなデータをインポートしようとすると

id,name,address
1,Gotou,Kyoto
2,Watari,Tokyo
3,Andou,Chiba

では実際に試してみます。最初にインポートするデータを用意します。データは CSV 形式で作成しておきます。作成したファイルはカレントディレクトリに userdata2.csv として保存しました。

id,name,address
1,Gotou,Kyoto
2,Watari,Tokyo
3,Andou,Chiba

ファイルを staff テーブルにインポートします。インポートする前に .mode コマンドを使って csv モードに変更してください。そのあとで .import コマンドを次のように実行します。

.mode csv
.import ./userdata2.csv staff2

存在していないテーブルにインポートする(1)

新しく staff2 テーブルが作成されて、テーブルにデータがインポートされました。

.schema コマンドを使ってテーブルがどのように作成されたのかを確認してみます。

.schema staff2

存在していないテーブルにインポートする(2)

インポートしたデータの最初の行に書かれていた値をカラム名としてテーブルが作成されています。データはすべて TEXT 型です。

次に SELECT 文で staff2 テーブルのデータを確認してみます。

select * from staff;

存在していないテーブルにインポートする(3)

インポートしたデータの2行目以降のデータがテーブルのデータとして格納されているのが確認できます。

-- --

.import コマンドを使って CSV 形式で保存したファイルをテーブルにインポートする方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。