SQLite に CSV ファイルからデータを追記する方法:3 つの簡単な方法とその他のオプション
SQLite に CSV ファイルからデータを追記する方法
INSERT ステートメントを使用する
最も基本的な方法は、INSERT
ステートメントを使用して、CSV ファイルの各行を個々のレコードとして挿入する方法です。 以下のコード例は、data.csv
という名前の CSV ファイルから customers
という名前のテーブルにデータを追記する方法を示しています。
-- customers テーブルが存在しない場合は作成する
CREATE TABLE IF NOT EXISTS customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT
);
-- CSV ファイルからデータを挿入する
INSERT INTO customers (name, email)
SELECT *
FROM 'data.csv'
WHERE id > (SELECT MAX(id) FROM customers);
このコードは、以下の処理を行います。
customers
テーブルが存在しない場合は、id
,name
,email
という 3 つの列を持つテーブルを作成します。data.csv
ファイルからすべての行をcustomers
テーブルに挿入します。- すでにテーブルに存在するレコードを重複して挿入しないように、
id
が既存の最大 ID より大きい行のみを挿入します。
ポイント:
- CSV ファイルの列名とテーブルの列名の一致に注意する必要があります。
- 文字コードの問題が発生する可能性があるため、必要に応じて
encoding
オプションを指定する必要があります。
SQLITE_IMPORT モジュールを使用する
SQLite には、SQLITE_IMPORT
モジュールと呼ばれる、CSV ファイルをより簡単にインポートするためのモジュールが用意されています。 以下のコード例は、data.csv
という名前の CSV ファイルを customers
という名前のテーブルに追記する方法を示しています。
-- SQLITE_IMPORT モジュールをロードする
LOAD MODULE 'sqlite_import';
-- CSV ファイルからデータを挿入する
.import 'data.csv' customers;
sqlite_import
モジュールをロードします。
SQLITE_IMPORT
モジュールは、デフォルトでは有効になっていません。有効にするには、SQLite データベースを開く前にPRAGMA load_extension('sqlite_import');
ステートメントを実行する必要があります。SQLITE_IMPORT
モジュールは、INSERT
ステートメントよりも高速にインポートできる可能性があります。
Python ライブラリを使用する
Python を使用している場合は、csv
と sqlite3
などのライブラリを使用して、CSV ファイルを SQLite データベースに簡単にインポートできます。 以下のコード例は、data.csv
という名前の CSV ファイルを customers
という名前のテーブルに追記する方法を示しています。
import csv
import sqlite3
# データベース接続を開く
connection = sqlite3.connect('database.db')
cursor = connection.cursor()
# CSV ファイルからデータを読み込む
with open('data.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
next(reader) # ヘッダー行をスキップする
for row in reader:
# データを挿入する
cursor.execute('INSERT INTO customers (name, email) VALUES (?, ?)', row)
# 変更をコミットしてデータベースを閉じる
connection.commit()
connection.close()
sqlite3
モジュールを使用して、database.db
という名前の SQLite データベースへの接続を開きます。csv
モジュールを使用して、data.csv
という名前の CSV ファイルを開きます。- CSV ファイルの各行をループし、各行のデータを
customers
テーブルに挿入します。 - 変更を
database.db
データベースにコミットして、接続を閉じます。
- この方法は、より複雑なデータ変換や処理が必要な場合に役立ちます。
- Python に慣れていない場合は、
INSERT
ステートメントまたはSQLITE_IMPORT
モジュールを使用する方が簡単かもしれません。
どの方法を選択するかは、データの量、必要な処理の複雑さ、および個人的な好みによって異なります。
サンプルコード:SQLite に CSV ファイルからデータを追記する方法
INSERT ステートメントを使用する
この方法は、CSV ファイルの各行を個々のレコードとして挿入する最も基本的な方法です。
例:
-- customers テーブルが存在しない場合は作成する
CREATE TABLE IF NOT EXISTS customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT
);
-- CSV ファイルからデータを挿入する
INSERT INTO customers (name, email)
SELECT *
FROM 'data.csv'
WHERE id > (SELECT MAX(id) FROM customers);
説明:
SQLITE_IMPORT モジュールを使用する
この方法は、SQLITE_IMPORT
モジュールを使用して、CSV ファイルをより簡単にインポートする方法です。
-- SQLITE_IMPORT モジュールをロードする
LOAD MODULE 'sqlite_import';
-- CSV ファイルからデータを挿入する
.import 'data.csv' customers;
Python ライブラリを使用する
この方法は、Python ライブラリを使用して、CSV ファイルを SQLite データベースに簡単にインポートする方法です。
import csv
import sqlite3
# データベース接続を開く
connection = sqlite3.connect('database.db')
cursor = connection.cursor()
# CSV ファイルからデータを読み込む
with open('data.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
next(reader) # ヘッダー行をスキップする
for row in reader:
# データを挿入する
cursor.execute('INSERT INTO customers (name, email) VALUES (?, ?)', row)
# 変更をコミットしてデータベースを閉じる
connection.commit()
connection.close()
これらのサンプルコードはあくまでも参考であり、状況に合わせて調整する必要があることに注意してください。
シェルスクリプトを使用する
Bash などのシェルスクリプトを使用して、sqlite3
コマンドラインツールと CSV
ツールを組み合わせることで、CSV ファイルを SQLite データベースにインポートすることができます。 この方法は、特に繰り返し行う必要があるインポート処理を自動化する場合に役立ちます。
GUI ツールを使用する
SQLite Studio や DB Browser for SQLite などの GUI ツールを使用すると、CSV ファイルを SQLite データベースに簡単にインポートできます。 これらのツールは、初心者にとって使いやすいグラフィカル インターフェースを提供しており、データの表示、編集、クエリなども簡単に行うことができます。
クラウドベースのソリューションを使用する
Google Sheets や Zoho Sheet など、クラウドベースのスプレッドシートアプリケーションの中には、データを SQLite データベースにエクスポートできるものがあります。 この方法は、特にスプレッドシートでデータを管理していて、それを SQLite データベースで分析したい場合に役立ちます。
StitchData や Talend など、より高度な ETL (Extract, Transform, Load) ツールを使用すると、CSV ファイルから SQLite データベースへの複雑なデータインポートを処理することができます。 これらのツールは、データの変換、クリーニング、マッピングなど、さまざまな機能を提供しており、大規模なデータセットを扱う場合に役立ちます。
上記以外にも、様々な方法やツールが用意されていますので、ご自身のニーズに合った方法を見つけてみてください。
sqlite