Categories: OS

PowerShellからSQLiteを操作する方法:接続からSQL文実行までをわかりやすく解説

PowerShellはWindowsユーザーにとって非常に強力なスクリプト環境ですが、SQLiteのような軽量データベースと連携させることで、さらに多様な用途に活用することができます。
特にログデータの保存や簡易データ管理など、日々の業務で活躍する場面も多いでしょう。

本記事では、PowerShellからSQLiteに接続し、SQL文を実行する基本的な方法について詳しく解説します。
外部モジュールの導入方法から、実際のSQL文の発行、結果の取得と表示までを段階的に紹介していきますので、PowerShellとSQLiteの連携に興味のある方はぜひ参考にしてください。


SQLiteとは?PowerShellと組み合わせるメリット

SQLiteは、サーバー不要でファイル単位で完結する軽量なデータベースです。インストールが不要で、アプリケーションに組み込みやすいため、スクリプト処理や一時的なデータ保存に非常に適しています。

一方のPowerShellは、Windows環境での自動化に特化したスクリプト言語であり、ファイル操作やネットワーク、レジストリ、プロセスなど多くのタスクを効率化できます。

この2つを組み合わせることで、以下のようなメリットが生まれます:

  • データベースを使ったログの蓄積・抽出が容易になる
  • サーバーレスで動作するため手軽に導入可能
  • スクリプトの中で完結するので、タスクスケジューラとの連携もしやすい

PowerShellからSQLiteに接続するための準備

PowerShellは標準ではSQLiteに直接アクセスする機能を持っていません。
そのため、SQLite用の.NETライブラリを使用して接続を実現します。代表的な方法として以下の2つがあります。

方法1:System.Data.SQLite を使用する

System.Data.SQLiteは、公式が提供している.NET向けのSQLiteプロバイダです。NuGetから取得し、PowerShellから利用可能です。

以下の手順でセットアップします:

  1. SQLite DLL を取得する
    NuGet または公式サイトから System.Data.SQLite.dll をダウンロードします。
  2. PowerShellでDLLを読み込む
Add-Type -Path "C:\path\to\System.Data.SQLite.dll"
  1. SQLiteに接続する
$connectionString = "Data Source=C:\sqlite\db\test.db;Version=3;"
$connection = New-Object System.Data.SQLite.SQLiteConnection($connectionString)
$connection.Open()

SQL文を発行してみる(CREATE・INSERT・SELECT)

SQLiteに接続できたら、次はSQL文を使って操作をしていきましょう。基本的なSQL操作をPowerShellでどう書くかを例とともに紹介します。

テーブルの作成(CREATE TABLE)

$createTableCmd = $connection.CreateCommand()
$createTableCmd.CommandText = @"
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL
);
"@
$createTableCmd.ExecuteNonQuery()

データの挿入(INSERT)

$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO users (name, email) VALUES ('田中太郎', 'taro@example.com')"
$insertCmd.ExecuteNonQuery()

データの取得(SELECT)

$selectCmd = $connection.CreateCommand()
$selectCmd.CommandText = "SELECT * FROM users"
$reader = $selectCmd.ExecuteReader()

while ($reader.Read()) {
Write-Host "ID: $($reader['id']) Name: $($reader['name']) Email: $($reader['email'])"
}

パラメータを使って安全にデータ操作を行う

SQLインジェクションなどを避けるためにも、値の埋め込みにはパラメータを使うのが安全です。
以下のように実装できます。

$insertCmd = $connection.CreateCommand()
$insertCmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)"
$insertCmd.Parameters.AddWithValue("@name", "佐藤花子")
$insertCmd.Parameters.AddWithValue("@email", "hanako@example.com")
$insertCmd.ExecuteNonQuery()

このように、値を直接SQLに埋め込まずに、パラメータで渡すことで安全性と保守性が高まります。


接続の終了処理を忘れずに

データベースへの接続を開いたままにしておくのはよくありません。
スクリプトの最後で必ず接続を閉じましょう。

$connection.Close()

また、可能であれば try/finally で閉じる処理を確実に実行することをおすすめします。

try {
$connection.Open()
# SQL処理をここで実行
}
finally {
$connection.Close()
}

モジュールを使ってもっと簡単に操作する方法

PowerShellには sqlite をより簡単に扱うためのコミュニティモジュールも存在します。
たとえば PowerShell.SQLite モジュールをインストールすれば、より直感的に操作が可能です。

Install-Module -Name PowerShell.SQLite -Scope CurrentUser
Import-Module PowerShell.SQLite

Invoke-SqliteQuery -DataSource "C:\sqlite\db\test.db" -Query "SELECT * FROM users"

この方法は、簡単にSQL実行結果を得たいときに非常に便利です。
ただし、モジュールの仕様によって制限や注意点もあるため、公式ドキュメントの確認をおすすめします。


まとめ:PowerShell + SQLiteで自動化の幅が広がる

本記事では、PowerShellからSQLiteに接続し、SQL文を実行する方法を紹介しました。

ポイントのまとめ:

  • SQLiteは軽量かつ扱いやすいファイルベースのデータベース
  • PowerShellでは.NETライブラリを使ってSQLiteに接続可能
  • SQL文の実行には CreateCommand() を活用
  • パラメータを使って安全なデータ操作を行う
  • モジュールを導入すればより簡単な記述も可能

PowerShellスクリプトにデータベース機能を取り入れることで、日常業務の自動化やデータ管理がぐっと便利になります。
一度環境を整えてしまえば、あとは繰り返し再利用できるため、ぜひこの機会に試してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。

Recent Posts