ODBC Firebird Postgresql、Powershellでのクエリ実行

システムエンジニアは、Powershellツールを使用してDBMSから特定のデータセットを直接取得する必要がある場合があります。 この記事では、Firebirdを操作する2つの方法、odbcドライバーとクライアントライブラリを使用したpostgresqlを紹介します。



firebirdから始めて、ODBCドライバーを介してデータベースを操作します。まず、クライアントライブラリGDS32.DLLをシステムに登録する必要があります。そのビット深度は、後でインストールする必要があるODBCドライバーと同じでなければなりません。ライブラリを登録するには、チェックボックスをオンにします。



画像






次に、 製造元のWebサイトも取り上げている ODBC自体をインストールします。そのビット容量は、以前にインストールしたクライアントのビット容量に対応する必要があることを忘れないでください。 これで、 postgresqlのC#の例に基づいたpowershellスクリプト自体



$dbServerName = "localhost:base.gdb" $dbUser = "SYSDBA" $dbPass = "masterkey" [string]$szConnect = "Driver={Firebird/InterBase(r) driver};Dbname=$dbServerName;Pwd=$dbPass;CHARSET=WIN1251;UID=$dbUser" $cnDB = New-Object System.Data.Odbc.OdbcConnection($szConnect) $dsDB = New-Object System.Data.DataSet try { $cnDB.Open() $adDB = New-Object System.Data.Odbc.OdbcDataAdapter $adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand("Select * From users", $cnDB) $adDB.Fill($dsDB) $cnDB.Close() } catch [System.Data.Odbc.OdbcException] { $_.Exception $_.Exception.Message $_.Exception.ItemName } foreach ($row in $dsDB[0].Tables[0].Rows) { $row }
      
      





ベースを操作するロジック:





スクリプトの最後に、通常のforeachループを使用して、受信したデータを繰り返し処理します。ここでは、ログインに応じてメールボックスを作成したり、特定のグループにユーザーを追加したりするなど、独自のロジックを追加できます。



次に、クライアントライブラリを使用する方法を検討します; ODBCドライバーをインストールし、システムにクライアントライブラリを登録する必要はありません。 このスクリプトは、製造元のWebサイトで入手可能なC#のに基づいています。



 function SelestFireBirdDB ($string) { [Reflection.Assembly]::LoadFile("C:\files\dll\FirebirdSql.Data.FirebirdClient.dll") $TestLog = "D:\tmp\TestLog.txt" #  $connectionString = "User=SYSDBA;Password=masterkey;Database=base.gdb;DataSource=localhost;Dialect=1;Pooling=true;MaxPoolSize=3;Connection Lifetime=60" $connection= New-Object FirebirdSql.Data.FirebirdClient.FbConnection($connectionString) try { $connection.Open() } catch { $_.Exception $_.Exception.Message $_.Exception.ItemName } # $Transaction = New-Object FirebirdSql.Data.FirebirdClient.FbTransactionOptions $BeginTransaction = $connection.BeginTransaction($Transaction) #  $Command= New-Object FirebirdSql.Data.FirebirdClient.FbCommand($string,$connection,$BeginTransaction) $Command.Parameters.Clear $Command.Parameters.AddWithValue("Speed", 100) #   $FbDataAdapter= New-Object FirebirdSql.Data.FirebirdClient.FbDataAdapter($Command) $FbDataAdapter $DataSet= New-Object System.Data.DataSet try { $FbDataAdapter.Fill($DataSet) $Selest= $DataSet.Tables[0] } catch { $_.Exception $_.Exception.Message $_.Exception.ItemName } finally { $BeginTransaction.Rollback() $connection.Close() } return ,$Selest }
      
      





ODBCドライバーを使用したpostgresqlの例で記事を締めくくります。 まずインストールする必要がありますが SCCMを使用して配布するのが便利なので、msiにパッケージ化されたパッケージを使用しました。 実際、スクリプト自体は、ドライバーの名前が変更される接続文字列のみがfirebirdと異なります。 Windows 10およびWindows Server 2016では、登録されたODBC Get-OdbcDriveドライバーのリストを表示するコマンドレットが登場しました。



 $dbServer = "192.168.0.10" $dbName = "core" $dbUser = "postgres" $dbPass = "postgres" $port = "5432" [string]$szConnect = "Driver={PostgreSQL Unicode(x64)};Server=$dbServer;Port=$port;Database=$dbName;Uid=$dbUser;Pwd=$dbPass;" $cnDB = New-Object System.Data.Odbc.OdbcConnection($szConnect) $dsDB = New-Object System.Data.DataSet try { $cnDB.Open() $adDB = New-Object System.Data.Odbc.OdbcDataAdapter $adDB.SelectCommand = New-Object System.Data.Odbc.OdbcCommand("SELECT id, name, age, login FROM public.users" , $cnDB) $adDB.Fill($dsDB) $cnDB.Close() } catch [System.Data.Odbc.OdbcException] { $_.Exception $_.Exception.Message $_.Exception.ItemName } foreach ($row in $dsDB[0].Tables[0].Rows) { $row.login $row.age }
      
      





この記事がお役に立てば幸いです。



All Articles