PythonでTSVファイルをSQLite3データベースにカンタン取り込み
SQLite3を使ってTSVファイルをインポートする方法
SQLite3は軽量で使いやすいデータベース管理システムです。一方、TSVファイルは、タブで区切られたテキストファイルで、データを保存するために広く使用されています。このチュートリアルでは、Pythonを使ってSQLite3データベースにTSVファイルをインポートする方法を説明します。
手順
- 必要なライブラリのインストール
まず、以下のコマンドを使用して、必要なライブラリをインストールする必要があります。
pip install sqlite3
- データベースの作成
次に、以下のコードを使用して、SQLite3データベースを作成します。
import sqlite3
# データベースファイルの名前を指定
db_file = 'my_database.db'
# データベースへの接続
conn = sqlite3.connect(db_file)
# カーソルを取得
cursor = conn.cursor()
- TSVファイルの読み込み
以下のコードを使用して、TSVファイルを読み込みます。
# TSVファイルの名前を指定
tsv_file = 'my_data.tsv'
# ファイルを開く
with open(tsv_file, 'r') as f:
# 各行をループ処理
for line in f:
# 行をタブで区切ってリストに変換
data = line.strip().split('\t')
# データをデータベースに挿入
cursor.execute('INSERT INTO my_table VALUES (?, ?, ?)', data)
- 変更のコミットとデータベースのクローズ
# 変更をコミット
conn.commit()
# データベースを閉じる
conn.close()
補足
- 上記のコードは、
my_table
という名前のテーブルにデータを挿入することを想定しています。テーブルが存在しない場合は、事前に作成する必要があります。 - データを挿入する列の名前は、
data
リストのインデックスと一致する必要があります。 - TSVファイルの形式は、上記のコードで想定されている形式と一致する必要があります。タブ文字以外の文字で区切られている場合は、コードを修正する必要があります。
上記以外にも、SQLite3を使ってTSVファイルをインポートする方法はいくつかあります。ご自身のニーズに合った方法を選択してください。
import sqlite3
# データベースファイルの名前を指定
db_file = 'my_database.db'
# データベースへの接続
conn = sqlite3.connect(db_file)
# カーソルを取得
cursor = conn.cursor()
# テーブルを作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS my_table (
column1 TEXT,
column2 INTEGER,
column3 REAL
)
''')
# TSVファイルの名前を指定
tsv_file = 'my_data.tsv'
# ファイルを開く
with open(tsv_file, 'r') as f:
# 各行をループ処理
for line in f:
# 行をタブで区切ってリストに変換
data = line.strip().split('\t')
# データをデータベースに挿入
cursor.execute('INSERT INTO my_table VALUES (?, ?, ?)', data)
# 変更をコミット
conn.commit()
# データベースを閉じる
conn.close()
このコードは、以下のことを行います。
my_database.db
という名前のSQLite3データベースを作成します。my_table
という名前のテーブルを作成します。このテーブルには、column1
というテキスト型の列、column2
という整型数の列、column3
という実数型の列があります。my_data.tsv
という名前のTSVファイルを開きます。- TSVファイルの各行をループ処理し、各行をタブで区切ってリストに変換します。
- リストの要素をデータベースに挿入します。
- このコードは、あくまでも例です。ご自身のニーズに合わせて変更する必要があります。
SQLite3を使ってTSVファイルをインポートするその他の方法
csvモジュールを使う
Pythonの標準ライブラリには、csv
モジュールと呼ばれるものがあります。このモジュールを使用して、CSVファイルとTSVファイルを簡単に読み書きすることができます。
import sqlite3
import csv
# データベースファイルの名前を指定
db_file = 'my_database.db'
# データベースへの接続
conn = sqlite3.connect(db_file)
# カーソルを取得
cursor = conn.cursor()
# テーブルを作成
cursor.execute('''
CREATE TABLE IF NOT EXISTS my_table (
column1 TEXT,
column2 INTEGER,
column3 REAL
)
''')
# TSVファイルの名前を指定
tsv_file = 'my_data.tsv'
# ファイルを開く
with open(tsv_file, 'r') as f:
# CSVリーダーを作成
reader = csv.reader(f, delimiter='\t')
# ヘッダー行を読み飛ばす
next(reader)
# データをデータベースに挿入
for row in reader:
cursor.execute('INSERT INTO my_table VALUES (?, ?, ?)', row)
# 変更をコミット
conn.commit()
# データベースを閉じる
conn.close()
pandasは、データ分析によく使用されるPythonライブラリです。pandasを使用して、TSVファイルを簡単に読み込み、データベースに挿入することができます。
import sqlite3
import pandas as pd
# データベースファイルの名前を指定
db_file = 'my_database.db'
# データベースへの接続
conn = sqlite3.connect(db_file)
# TSVファイルを読み込む
data = pd.read_csv('my_data.tsv', delimiter='\t')
# データをデータベースに挿入
data.to_sql('my_table', conn, if_exists='append', index=False)
# 変更をコミット
conn.commit()
# データベースを閉じる
conn.close()
SQLクエリを使う
SQLite3は、SQLクエリを使用してデータをインポートすることもできます。この方法は、より高度な方法ですが、柔軟性と制御性に優れています。
CREATE TABLE IF NOT EXISTS my_table (
column1 TEXT,
column2 INTEGER,
column3 REAL
);
.mode csv
.import my_data.tsv my_table
.mode normal
外部ツールを使う
SQLite3以外のツールを使用して、TSVファイルをインポートすることもできます。いくつかの人気のあるツールを以下に紹介します。
sqlite csv import-from-csv