ユーザ用ツール

サイト用ツール


powershell:sqlite_import_csv

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
powershell:sqlite_import_csv [2025/10/14 00:49] mikotopowershell:sqlite_import_csv [2025/10/15 07:29] (現在) mikoto
行 97: 行 97:
         $cmd.Parameters["@col1"].Value = $row.'col1'         $cmd.Parameters["@col1"].Value = $row.'col1'
         $cmd.Parameters["@col2"].Value = $row.'col2'         $cmd.Parameters["@col2"].Value = $row.'col2'
 +        $cmd.ExecuteNonQuery() | Out-Null
 +    }
 +
 +    # トランザクションをコミットする
 +    $tran.Commit()
 +
 +} else {
 +    [System.Windows.Forms.MessageBox]::Show("処理を中止しました。")
 +}
 +
 +
 +$conn.Close()
 +</code>
 +
 +===== TSVのインポート =====
 +
 +<code powershell>
 +Add-Type -AssemblyName System.Windows.Forms
 +Add-Type -AssemblyName System.Drawing
 +
 +# sqlite3.dll を読み込む
 +Add-Type -Path "path\to\dll\System.Data.SQLite.dll"
 +
 +# DBのファイルパス(無ければ新規作成)
 +$dbFile = "path\to\database\database.db"
 +$connStr = "Data Source=$dbFile;Version=3;"
 +
 +$sql = @"
 +INSERT INTO share
 +    (code, campany, quantity, obtained_price, current_price)
 +VALUES
 +    (@code, @campany, @quantity, @obtained_price, @current_price)
 +"@
 +
 +# SQLite 接続オブジェクトを作成
 +$conn = New-Object System.Data.SQLite.SQLiteConnection($connStr)
 +$conn.Open()
 +
 +# CSVデータの読み込み
 +$dialog = New-Object System.Windows.Forms.OpenFileDialog
 +#$dialog.InitialDirectory = "C:\Users\username\Downloads"
 +$dialog.Filter = "CSVファイル(*.csv)|*.csv|All files (*.*)|*.*"
 +$dialog_result = $dialog.ShowDialog()
 +
 +if ($dialog_result -eq [System.Windows.Forms.DialogResult]::OK) {
 +    $csvPath = $dialog.FileName
 +    $csvData = Import-Csv -Path $csvPath -Delimiter "`t" -Encoding Default
 +    $csvData
 +    # 処理の高速化のためのトランザクション開始
 +    $tran = $conn.BeginTransaction()
 +    $cmd = $conn.CreateCommand()
 +    $cmd.Transaction = $tran
 +    $cmd.CommandText = $sql
 +    # パラメータを一度だけ作成する
 +    $null = $cmd.Parameters.Add("@code", [System.Data.DbType]::String)
 +    $null = $cmd.Parameters.Add("@campany", [System.Data.DbType]::String)
 +    $null = $cmd.Parameters.Add("@quantity", [System.Data.DbType]::Int16)
 +    $null = $cmd.Parameters.Add("@obtained_price", [System.Data.DbType]::Int16)
 +    $null = $cmd.Parameters.Add("@current_price", [System.Data.DbType]::Double)
 +
 +    foreach ($row in $csvData) {
 +        $cmd.Parameters["@code"].Value = $row.'コード'
 +        $cmd.Parameters["@campany"].Value = $row.'会社名'
 +        $cmd.Parameters["@quantity"].Value = $row.'数量'
 +        $cmd.Parameters["@obtained_price"].Value = $row.'取得単価'
 +        $cmd.Parameters["@current_price"].Value = $row.'現在値'
         $cmd.ExecuteNonQuery() | Out-Null         $cmd.ExecuteNonQuery() | Out-Null
     }     }
powershell/sqlite_import_csv.1760370550.txt.gz · 最終更新: 2025/10/14 00:49 by mikoto