PowerShell2 > SQLite3

(0) Adatbázis és tábla létrehozása


PS D:\powershell> $sqlitePath = "c:\Program Files\SQLite.NET\bin\System.Data.SQLite.dll"
PS D:\powershell> [System.Reflection.Assembly]::LoadFrom($sqlitePath)

GAC    Version        Location
---    -------        --------
True   v2.0.50727     C:\Windows\assembly\GAC_32\
System.Data.SQLite\1.0.65.0__db937bc2d44ff139\System.Data.SQLite.dll

PS D:\powershell> $Con = New-Object System.Data.SQLite.SQLiteConnection 
PS D:\powershell> $Con.ConnectionString = "Data Source=d:\powershell\test.db3"
PS D:\powershell> $Con.Open()
PS D:\powershell> $Cmd = $Con.CreateCommand()
PS D:\powershell> $Cmd.CommandText = "CREATE TABLE test (id INTEGER, x INTEGER)"
PS D:\powershell> try{ [bool] $Cmd.ExecuteNonQuery() } catch {write-host $_ }
Exception calling "ExecuteNonQuery" with "0" argument(s): "SQLite error
table test already exists"

(1) C...


[..]
$Cmd.CommandText = "INSERT INTO test (id, x) VALUES (3, 4)"
[..]

Egyszerre sok adatot tranzakción belül érdemes beszúrni, mert különben lassú lesz.


$dbTrans = $Con.BeginTransaction()

$Cmd = $Con.CreateCommand()
$Cmd.CommandText = "INSERT INTO test(id,x) VALUES(?,?)"
$Field1 = $Cmd.CreateParameter()
$Field2 = $Cmd.CreateParameter()

$Cmd.Parameters.Add($Field1);
$Cmd.Parameters.Add($Field2);


  $Field1.Value = 12;
  $Field2.Value = 99;
  $Cmd.ExecuteNonQuery();

$dbTrans.Commit()

Nem tűnik úgy hogy működne...Működik.
Annak, aki szeretne kísérletezni: bulk-insert1.ps1
bulk-insert2.ps1

800MHz : 100.000 INSERTs : 16s
800MHz : 1.000.000 INSERTs : 3m 15s
1700MHz : 1.000.000 INSERTs : 69s

Vajon hogy lehet egy megszakított COMMIT-ot elkapni és a zár alól feloldani az adatbázist?

(2) .R..


[..]
$Cmd.CommandText = "SELECT * FROM test"
$dr = $Cmd.ExecuteReader()
# táblanevek kiíratása: #
for ($i=0;$i -lt $dr.FieldCount;$i++) {
Write-Host $dr.GetName($i) $dr.GetDataTypeName($i)
}
while ($dr.Read())
{
    write-host $dr.GetValue(0) " " $dr.GetValue(1)
}

sqlite3-select.ps1

(3) ..U.
(4) ...D

Puska | SQLite3 cheatsheet | SQLite3 dotNet| Win/SQLite3