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');
次にインポートするデータを用意します。データは CSV 形式で作成しておきます。作成したファイルはカレントディレクトリに userdata.csv として保存しました。
3,Gotou,Kyoto
4,Watari,Tokyo
5,Andou,Chiba
ファイルを staff テーブルにインポートします。インポートする前に .mode コマンドを使って csv モードに変更してください。そのあとで .import コマンドを次のように実行します。
.mode csv
.import ./userdata.csv staff
インポートしたあとに SELECT 文で staff テーブルのデータを確認してみます。
select * from staff;
既存のデータに追加する形でインポートしたデータがテーブルに格納されています。
存在していないテーブルにインポートする
存在していないテーブルにインポートしようとした場合、少し挙動が異なります。新しいテーブルが作成されるのですが、インポートしたデータの最初の行に書かれている値がカラム名となります。
例えば次のようなデータをインポートしようとすると
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
新しく staff2 テーブルが作成されて、テーブルにデータがインポートされました。
.schema コマンドを使ってテーブルがどのように作成されたのかを確認してみます。
.schema staff2
インポートしたデータの最初の行に書かれていた値をカラム名としてテーブルが作成されています。データはすべて TEXT 型です。
次に SELECT 文で staff2 テーブルのデータを確認してみます。
select * from staff;
インポートしたデータの2行目以降のデータがテーブルのデータとして格納されているのが確認できます。
-- --
.import コマンドを使って CSV 形式で保存したファイルをテーブルにインポートする方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。