SQLite に CSV ファイルをインポートし、自動インクリメント主キーを設定する方法
このチュートリアルでは、SQLite データベースに CSV ファイルをインポートする方法と、自動インクリメント主キーを設定する方法を説明します。
必要条件
- SQLite がインストールされていること
- CSV ファイル
手順
- SQLite データベースを作成する
CREATE TABLE your_table_name (
id INTEGER PRIMARY KEY AUTOINCREMENT,
-- 他の列を定義
);
上記コードでは、your_table_name
という名前のテーブルを作成し、id
という名前の主キー列を定義しています。AUTOINCREMENT
キーワードを使用すると、この列の値は自動的にインクリメントされます。
- CSV ファイルをインポートする
以下のいずれかの方法で CSV ファイルをインポートできます。
方法 1: SQLite データベース ブラウザーを使用する
- SQLite データベース ブラウザー (DB Browser for SQLite など) を開きます。
- ファイルを開き、インポートする CSV ファイルを選択します。
- "テーブルへインポート" オプションを選択します。
- テーブル名とオプションを設定します。
- "インポート" ボタンをクリックします。
方法 2: SQL INSERT ステートメントを使用する
INSERT INTO your_table_name (column1, column2, ...)
VALUES (value1, value2, ...);
上記コードでは、your_table_name
テーブルにデータを挿入する方法を示しています。column1
、column2
はテーブルの列名、value1
、value2
は挿入する値です。
例
customers.csv という名前の CSV ファイルがあり、次の内容が含まれていると仮定します。
name,email
Taro Yamada,[email protected]
Hanako Sato,[email protected]
Jiro Tanaka,[email protected]
この場合、次の SQL ステートメントを使用して customers.csv ファイルを customers
テーブルにインポートできます。
.mode csv
.header ON
LOAD DATA LOCAL INFILE 'customers.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
注意事項
- CSV ファイルの列の順序は、テーブルの列の順序と一致する必要があります。
- 文字コードの問題が発生する可能性があるため、CSV ファイルのエンコーディングを指定する必要がある場合があります。
-- customers.csv という名前の CSV ファイルがあると仮定します。
-- このファイルには、次の内容が含まれています。
name,email
Taro Yamada,taro.yamada@example.com
Hanako Sato,hanako.sato@example.com
Jiro Tanaka,jiro.tanaka@example.com
-- customers テーブルを作成します。
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT
);
-- customers.csv ファイルを customers テーブルにインポートします。
.mode csv
.header ON
LOAD DATA LOCAL INFILE 'customers.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
-- customers テーブルのデータを確認します。
SELECT * FROM customers;
このコードは、以下の操作を実行します。
customers
という名前のテーブルを作成します。このテーブルには、id
という自動インクリメント主キー列、name
列、およびemail
列があります。customers.csv
ファイルをcustomers
テーブルにインポートします。customers
テーブルのデータを表示します。
CSV ファイルは、次の形式である必要があります。
- 各行はカンマで区切られたフィールドで構成されます。
- 最初の行はヘッダー行で、各列の名前が含まれます。
- フィールド値は、引用符で囲まれている場合があります。
ロード データステートメント
LOAD DATA
ステートメントは、CSV ファイルを SQLite テーブルにインポートするために使用されます。このステートメントには、次の引数があります。
LOCAL INFILE 'filename'
: インポートする CSV ファイルの名前INTO TABLE table_name
: インポート先のテーブルの名前FIELDS TERMINATED BY ','
: フィールドを区切る文字
- CSV ファイルのエンコーディングが SQLite データベースのエンコーディングと一致していることを確認してください。
- CSV ファイルに不正なデータが含まれていないことを確認してください。
- psycopg2 や sqlite3 などの Python ライブラリを使用して、CSV ファイルを SQLite データベースに直接読み込むことができます。
- この方法は、より柔軟性と制御性に優れていますが、プログラミングに関する基本的な知識が必要です。
シェルスクリプトを使用する
- bash や PowerShell などのシェルスクリプトを使用して、
sqlite3
コマンドラインツールを呼び出し、CSV ファイルをインポートできます。 - この方法は、複数回のインポートタスクを自動化する場合に役立ちます。
GUI ツールを使用する
- DB Browser for SQLite や SQLiteStudio などの GUI ツールを使用して、CSV ファイルを SQLite データベースにインポートできます。
- この方法は、初心者にとって使いやすいですが、機能が制限されている場合があります。
最適な方法の選択
使用する方法は、ニーズとスキルレベルによって異なります。
- シンプルで使いやすい方法: SQLite データベースブラウザーを使用する
- 柔軟性と制御性が必要: Python ライブラリを使用する
- タスクを自動化したい: シェルスクリプトを使用する
- GUI を使用する方が慣れている: GUI ツールを使用する
database csv sqlite