powershell:sqlite_import_csv
文書の過去の版を表示しています。
CSVをSQLiteのテーブルにインポートする
例1
# CSVやTSVのデータをSQLiteでデータベースにインポートする # CSVを読み込み #$data = Import-Csv -Path .\list.tsv -Delimiter "`t" # タブ区切り #$data = Import-Csv -Path .\list.csv -Delimiter ";" # セミコロン区切り $data = Import-Csv -Path .\list.csv $data | Format-Table # sqlite3.dll を読み込む Add-Type -Path ".\System.Data.SQLite.dll" # DBのファイルパス(無ければ新規作成) $dbFile = ".\test.db" $connectionString = "Data Source=$dbFile;Version=3;" if (-not (Test-Path $dbFile)) { [System.Data.SQLite.SQLiteConnection]::CreateFile($dbFile) } # SQLite 接続オブジェクトを作成 $conn = New-Object System.Data.SQLite.SQLiteConnection($connectionString) $conn.Open() # コマンドオブジェクト $cmd = $conn.CreateCommand() # テーブルがない場合は作成 $cmd.CommandText = @" CREATE TABLE IF NOT EXISTS logs ( date TEXT NOT NULL, level TEXT, detail TEXT ); "@ $cmd.ExecuteNonQuery() foreach ($row in $data) { $cmd = $conn.CreateCommand() $cmd.CommandText = "INSERT INTO logs (date, level, detail) VALUES (@date, @level, @detail)" $cmd.Parameters.AddWithValue("@date", $row.date) | Out-Null $cmd.Parameters.AddWithValue("@level", $row.level) | Out-Null $cmd.Parameters.AddWithValue("@detail", $row.detail) | Out-Null $cmd.ExecuteNonQuery() } $conn.Close()
例2
# SQLite の DLL を読み込み Add-Type -Path ".\System.Data.SQLite.dll" # SQLite データベースのパス $dbPath = ".\test.db" $connectionString = "Data Source=$dbPath;Version=3;" # 接続を開く $connection = New-Object System.Data.SQLite.SQLiteConnection($connectionString) $connection.Open() # テーブル作成(無ければ作る) $command = $connection.CreateCommand() $command.CommandText = @" CREATE TABLE IF NOT EXISTS people ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER ); "@ $command.ExecuteNonQuery() | Out-Null # CSV を読み込み $csvPath = ".\data.csv" $rows = Import-Csv -Path $csvPath # トランザクション開始(高速化) $transaction = $connection.BeginTransaction() foreach ($row in $rows) { $command = $connection.CreateCommand() $command.CommandText = "INSERT INTO people (id, name, age) VALUES (@id, @name, @age);" # パラメータに値をバインド $command.Parameters.Add((New-Object System.Data.SQLite.SQLiteParameter("@id", $row.id))) | Out-Null $command.Parameters.Add((New-Object System.Data.SQLite.SQLiteParameter("@name", $row.name))) | Out-Null $command.Parameters.Add((New-Object System.Data.SQLite.SQLiteParameter("@age", $row.age))) | Out-Null $command.ExecuteNonQuery() | Out-Null } # コミット $transaction.Commit() # 接続を閉じる $connection.Close() Write-Host "CSVデータをSQLiteにインポートしました。"
powershell/sqlite_import_csv.1758724156.txt.gz · 最終更新: 2025/09/24 23:29 by mikoto