2009-06-29 8 views
1

J'ai besoin d'interroger périodiquement les journaux d'événements sur une poignée de serveurs et d'insérer des événements spécifiques dans une table Postgres.Comment insérer des données dans une table Postgres à l'aide de PowerShell ou de VBScript?

Je n'arrive pas à trouver comment insérer des données dans une table via ODBC en utilisant PowerShell et/ou VBScript. Je suis assez familier avec VBScript et PowerShell en général, et je peux créer une instruction SQL UPDATE qui fonctionne, j'essaie juste de lier les deux ensemble, ce que je n'ai jamais fait auparavant.

J'ai le pilote ODBC Postgres installé, j'ai configuré une source de données qui teste OK.

Google ne m'aide pas jusqu'à présent, quelqu'un peut-il fournir des pointeurs?

Répondre

0

Merci pour la réponse.

J'ai utilisé plus de googling et éventuellement grokked assez ADO.NET pour le faire fonctionner, bien qu'il ne soit pas nécessairement "correct".

$DBConnectionString = "Driver={PostgreSQL UNICODE};Server=$DBIP;Port=$DBPort;Database=$DBName;Uid=$DBUser;Pwd=$DBPass;" 

$DBConn = New-Object System.Data.Odbc.OdbcConnection 
$DBConn.ConnectionString = $DBConnectionString 

$DBCmd = $DBConn.CreateCommand() 

[void]$DBCmd.Parameters.Add("@TimeStamp", [System.Data.Odbc.OdbcType]::varchar, 26) 
[void]$DBCmd.Parameters.Add("@ErrorText", [System.Data.Odbc.OdbcType]::varchar, 4000) 

$DBCmd.CommandText = "INSERT INTO errorinfo (errortime,xml) VALUES(?,?)" 

$DBCmd.Connection.Open() 

$DBCmd.Parameters["@TimeStamp"].Value = $TimeStamp.ToString("yyyy-MM-dd HH:mm:ss") 
$DBCmd.Parameters["@ErrorText"].Value = $ErrorText 

[void]$DBCmd.ExecuteNonQuery() 
1

Quelle partie avez-vous des problèmes avec? Jusqu'où avez-vous? Avez-vous une connexion ouverte? Connaissez-vous la syntaxe de la chaîne de connexion?

Préparer une connexion:

Set conn = Server.CreateObject("ADODB.Connection") 
conn.Open dsn, dbuser, dbpass 

insert:

insert = "insert into table (col1, col2) values (12, 'Example Record')" 
conn.Execute insert 
If conn.errors.Count > 0 Then 
    Dim counter 
    WScript.echo "Error during insert" 
    For counter = 0 To conn.errors.Count 
     WScript.echo "Error #" & DataConn.errors(counter).Number 
     WScript.echo " Description(" & DataConn.errors(counter).Description & ")" 
    Next 
Else 
    WScript.echo "insert: ok" 
End If 

pour être complet, requête:

query = "select * from table where col1 = 7" 
Set recordSet = conn.execute(query) 
' result is an object of type ADODB.RecordSet 

Si vous voulez Powershell, essayez this post. Si vous avez besoin de connaître la chaîne de connexion, essayez connectionstrings.com.

Questions connexes