Python を使用した Excel ファイルのデータベース テーブルへのインポート方法
今日のデータ駆動型の世界では、データを効率的に取り扱い、処理することは、あらゆる組織や個人にとって不可欠なタスクです。 豊富なライブラリ エコシステムを備えたPython は、 pandasライブラリなどのデータ操作と管理のための強力なツールを提供します。 一般的なシナリオの 1 つは、 Excelスプレッドシートからデータを抽出またはインポートし、さらに分析したり他のシステムと統合したりするために、データベースにデータを保存または挿入する必要があることです。 このチュートリアルでは、このプロセスを自動化し、Excel シート ファイルからデータをシームレスに読み取り、データベースに挿入できるようにする Python スクリプトを作成する方法について説明します。 このチュートリアルを完了すると、データ移行タスクを効率的に処理できるようになります。 始めましょう!
Python を使用して Excel ファイルをデータベース テーブルにインポートする方法
- まず、IronXL ライブラリをインストールします。
- IronXL を使用して Excel ファイルをメモリにロードします。
- 作業したい特定のスプレッドシートを読み込みます。
- インポートする正確なデータ範囲を選択します。
- Python を使用して、SQLite や MySQL 接続データベースなどの任意のデータベースとの接続を確立します。
- インポートしたデータを収容するために、SQLite データベース内に新しいテーブルを作成します。
- Excel ファイルから選択した行を、新しく作成した SQLite テーブルに挿入します。
- 作成された SQLite テーブルからデータを取得して選択し、さらに分析または処理します。
このチュートリアルでは、Excel ファイルの処理効率で有名な Python ライブラリであるIronXLを使用します。 IronXL をスクリプトに統合することで、Excel スプレッドシートからシームレスにデータを抽出し、データベースにスムーズに挿入してさらに分析や処理を行うことができます。
IronXLとは?
IronXL は Iron Software によって開発された Python ライブラリであり、Python アプリケーション内で直接 Excel ファイルを読み取り、生成、編集するための強力な機能を提供します。 特に、IronXL は Microsoft Excel のインストールから独立しており、さまざまな環境間での展開を簡素化します。 IronXL を使用すると、開発者は次のメリットを得られます。
クロスプラットフォーム サポート: Windows、macOS、Linux、Docker、Azure、AWS プラットフォームでシームレスな操作を実現し、多様な開発セットアップへの適応性を確保します。
データのインポートとエクスポート: XLS、XLSX、CSV、TSV ファイルからのデータのインポートを簡単に処理できます。また、ワークシートをこれらの形式にエクスポートしたり、相互運用性を高めるために JSON にエクスポートしたりする柔軟性も備えています。
暗号化機能: IronXL の暗号化機能を活用してデータのセキュリティを確保し、XLSX、XLSM、XLTX ファイルをパスワードで保護できます。
数式と再計算: Excel の数式を簡単に操作でき、シートを編集するたびに自動的に再計算されるという利点も加わり、データ操作の正確性と信頼性が確保されます。
セルのスタイル設定:フォントスタイル、サイズ、背景パターン、境界線、配置を調整して個々のセルの外観をカスタマイズし、Excel ドキュメントの視覚的なプレゼンテーションを強化します。
幅広いドキュメント形式: XLS、XLSX、XLST、XLSM、CSV、TSV などのさまざまな形式をサポートしている IronXL により、開発者はさまざまなシナリオでデータを簡単かつ効率的に処理できるようになります。
それでは、まずIronXLのインストールから始めましょう。
ステップ1: IronXLライブラリをインストールする
最初のステップは、IronXL ライブラリをインストールすることです。 コマンドプロンプトでIronXLをインストールするには、次のコマンドを実行します。
pip install IronXLpip install IronXLステップ2: Excelワークブックを読み込む
次のステップはExcelファイルを読み込むことです。このチュートリアルでは、以下のExcelファイルを使用します。
! Pythonを使用してExcelファイルをデータベーステーブルにインポートする方法: 図1 - Excelファイルの入力例
次のコードは、既存の Excel ファイルをメモリに読み込みます。
from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"
# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"
# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")上記の Python コード スニペットは、IronXL ライブラリを使用して"sample_excel.xlsx"という名前の Excel ブックを読み込む方法を示しています。 まず、必要な Python モジュールを IronXL からインポートします。 次に、ライブラリの使用を検証するためにライセンス キーが割り当てられます。 無料のライセンス キーはIronXL Web サイトから取得できます。 最後に、 Loadメソッドを使用して、指定された Excel ブックを開き、メモリに読み込みます。 これにより、データの読み取り、セル値の変更、書式設定の適用など、プログラムによるコンテンツの後続の操作が可能になります。
ステップ3: ワークシートの選択
IronXL を使用して Excel ブック内のワークシートを選択するには、ワークシートのインデックスまたは名前を指定できます。
# Select the first worksheet in the loaded Excel workbook
worksheet = workbook.WorkSheets[0]# Select the first worksheet in the loaded Excel workbook
worksheet = workbook.WorkSheets[0]この行は、読み込まれた Excel ブックの最初のワークシートを選択し、それを変数worksheetに割り当てて、ブック内の特定のワークシートに対して後続の操作を実行できるようにします。 これにより、Excel シートからワークシート変数に Excel データが読み込まれます。
ステップ4: データベース接続を開く
このチュートリアルでは、MySQL データベース サーバーの代わりに SQLite データベースを使用します。 データベース操作を開始するには、まずデータベースへの接続を確立します。
import sqlite3
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')import sqlite3
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')上記の行は、"data.db"という名前の SQLite データベースへの接続を確立します。 指定されたデータベースが存在しない場合は、自動的に作成されます。 この接続により、クエリの実行やデータ操作の実行など、SQLite データベースとの後続の対話が可能になります。
ステップ5: テーブルを作成する
次のステップは、データベースにデータベーステーブルを作成し、Excelファイルからデータをインポートすることです。SQLiteデータベースにテーブルを作成するには、接続オブジェクトを使用してSQLステートメントを実行します。
# Create a cursor object for database operations
cursor = conn.cursor()
# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
id INTEGER,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age INTEGER
)
''')# Create a cursor object for database operations
cursor = conn.cursor()
# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
id INTEGER,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age INTEGER
)
''')上記のコード スニペットは、SQLite データベース接続内で SQL コマンドを実行するためにカーソル オブジェクトを初期化します。 "id"、"FirstName"、"LastName"、"Gender"、"Country"、および"Age"の列を持つ"customer"という名前のテーブルを作成します。 テーブルがまだ存在しない場合は、指定された列のデータ型に従ってテーブルが作成されます。
ステップ6: Pythonを使用してデータベースにデータをインポートする
ここで、新しく作成したテーブルにデータを挿入します。 Excel ファイルをインポートし、そのデータを SQLite データベースに挿入します。
# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
# Extracting values from columns A to F in Excel worksheet
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
# Executing SQL INSERT command
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
# Commit data insertion to the database
conn.commit()# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
# Extracting values from columns A to F in Excel worksheet
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
# Executing SQL INSERT command
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
# Commit data insertion to the database
conn.commit()上記のコードは、Excel ワークシートの 2 行目から 10 行目を反復処理し、各行の A 列から F 列の値を抽出します。 これらの値はタプルに格納され、"customer"テーブルに挿入されるデータを表します。 次に、カーソルは SQL INSERT コマンドを実行し、値のタプルをテーブルに組み込みます。 このプロセスは行ごとに繰り返され、Excel ファイルから SQLite データベースにデータが効率的にインポートされます。 最後に、 conn.commit()はトランザクションをコミットし、変更がデータベースに保存され、永続化されるようにします。
ステップ7: データベースからデータを読み取る
データが正しく挿入されたかどうかを確認するには、SELECT クエリを使用して SQLite データベースの 'customer' テーブルからデータを読み取ることができます。 例えば:
# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print each row to verify inserted data
for row in rows:
print(row)
# Close the database connection to release resources
conn.close()# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print each row to verify inserted data
for row in rows:
print(row)
# Close the database connection to release resources
conn.close()上記のコードは、SQLite データベースの 'customer' テーブルに対して SELECT クエリを実行し、すべての行を取得します。 取得された行は、 fetchall()メソッドを使用して 'rows' 変数に格納されます。 次に、各行が繰り返し印刷され、"customer"テーブルに挿入されたデータが表示されます。 最後に、 close()メソッドを使用してデータベース接続が閉じられ、リソースが解放されます。
Pythonを使用してExcelファイルをデータベーステーブルにインポートする方法:図2 - データベース出力からの読み取り
完全なコードは次のとおりです。
import sqlite3
from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"
# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")
# Select worksheet at index 0
worksheet = workbook.WorkSheets[0]
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
# Create a cursor object for database operations
cursor = conn.cursor()
# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
id INTEGER,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age INTEGER
)
''')
# Clear any existing data from the table
cursor.execute("DELETE FROM customer")
# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
# Extracting values from columns A to F in Excel worksheet
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
# Executing SQL INSERT command
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
# Commit data insertion to the database
conn.commit()
# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print each row to verify inserted data
for row in rows:
print(row)
# Close the database connection to release resources
conn.close()import sqlite3
from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"
# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")
# Select worksheet at index 0
worksheet = workbook.WorkSheets[0]
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
# Create a cursor object for database operations
cursor = conn.cursor()
# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
id INTEGER,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age INTEGER
)
''')
# Clear any existing data from the table
cursor.execute("DELETE FROM customer")
# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
# Extracting values from columns A to F in Excel worksheet
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
# Executing SQL INSERT command
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
# Commit data insertion to the database
conn.commit()
# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print each row to verify inserted data
for row in rows:
print(row)
# Close the database connection to release resources
conn.close()結論
結論として、このチュートリアルでは、データ操作、具体的には Excel データの抽出とデータベースへの挿入に対する自動化されたアプローチについて説明しました。 このプロセスは、データ管理の効率を高めるだけでなく、データ処理の取り組みの可能性を最大限に引き出します。 Python と IronXL のパワーを活用してデータ ワークフローを最適化し、自信を持ってプロジェクトを推進しましょう。
よくある質問
Pythonを使用してExcelファイルからデータをデータベースにインポートするにはどうすれば良いですか?
Excelファイルを読み込むには、最初に`WorkBook.Load()`を使用し、その後ワークシートを選択してSQLiteと接続し、データを挿入する方法でIronXLライブラリを使用することができます。
PythonでExcelファイルを処理するためにIronXLを使用する利点は何ですか?
IronXLは、Microsoft ExcelをインストールせずにExcelファイルを処理することができ、クロスプラットフォーム操作をサポートし、暗号化や数式再計算のような強力な機能を提供し、データ抽出と挿入のプロセスを効率的に管理します。
PythonプロジェクトでIronXLを使用するにはどうすれば良いですか?
PythonプロジェクトにIronXLをインストールするには、コマンド `pip install IronXL` を使用します。これにより、IronXLがPython環境に追加され、Excelファイルを効率的に処理できるようになります。
Microsoft ExcelがインストールされていなくてもPythonでExcelファイルを処理することは可能ですか?
はい、IronXLを使用すればMicrosoft ExcelがインストールされていなくてもExcelファイルを処理することができます。IronXLはExcelファイルを独立して読み取り、編集、書き込みを行うための必要なすべての機能を提供します。
PythonでExcelデータを保存するためにデータベーステーブルを作成するプロセスは何ですか?
Pythonでデータベーステーブルを作成するには、SQLiteの`sqlite3`モジュールを使用できます。`connect()`を使用して接続を確立した後、カーソルオブジェクトを通じてSQL `CREATE TABLE`文を実行します。
ExcelデータがSQLiteデータベースに正常に挿入されたかどうかを確認するにはどうすれば良いですか?
テーブルに対して`SELECT`クエリを実行し、`fetchall()`メソッドを使用して結果セットからすべての行を取得して印刷することにより、挿入を確認できます。
Pythonを使用してExcelからデータベースへのデータマイグレーションのステップは何ですか?
ステップにはIronXLのインストール、Excelファイルの読み込み、ワークシートの選択、データベースへの接続、テーブルの作成、およびSQL `INSERT`コマンドを使用したデータの挿入のためのExcel行の反復が含まれます。
IronXLはPythonでExcelの数式を処理し再計算することができますか?
はい、IronXLはExcelの数式をサポートしており、再計算が可能です。これにより、Pythonアプリケーション内でのExcelファイル操作に包括的なソリューションを提供します。
IronXLはExcelファイル処理のためのクロスプラットフォーム操作をサポートしていますか?
はい、IronXLはクロスプラットフォーム操作をサポートしており、Windows、macOS、Linux、Docker、Azure、AWSなどの環境を含み、さまざまな開発セットアップに対応した多目的な選択肢となります。
IronXLはPythonアプリケーションのデータワークフローをどのように強化しますか?
IronXLは効率的なデータ抽出、操作、および挿入機能を提供することでデータ管理プロセスを最適化し、データ駆動アプリケーションのパフォーマンスを向上させます。







