18 May 2015  ·  databasesysadmin

Accedere ad un Database Access via PowerShell


Microsoft Access non è un database che apprezzo molto... ma a volte capita di doversi interfacciare con software che ne fanno uso. Nel mio caso ho avuto necessita di estrarre dei dati da alcune tabelle, e l'ho fatto tramite PowerShell di Windows.

Prima di cominciare dobbiamo assicurarci di:

Abilitare l'esecuzione degli script PowerShell, ad esempio lanciando una shell come amministratore e digitando il comando Set-ExecutionPolicy Unrestricted
Avere installato Access oppure "Access Database Engine" (sono driver per poter accedere ai files MDB senza avere installato Access). E' possibile scaricare gratuitamente l'engine dall'url https://www.microsoft.com/en-us/download/details.aspx?id=39358

Lo script

Per accedere al database useremo le API ADODB di Microsoft.

Creiamo un file elabora.ps1 (potete usare anche il notepad):

$adOpenStatic = 3
$adLockOptimistic = 3
$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADODB.Recordset

# qui definiamo il percorso completo del file con il database access  
$path = "C:\percorso\database.mdb"

# otteniamo una connessione al database
$cn.Open("Provider = Microsoft.ACE.OLEDB.12.0;Data Source = $path")

# eseguiamo una query (sostituitela con quella utile alle vostre esigenze)
$rs.Open("SELECT * FROM tabella", $cn, $adOpenStatic, $adLockOptimistic)

# analizziamo i risultati record per record
while(!$rs.EOF) {
    # effettuiamo qualche elaborazione del record corrente
    # (in questo caso ci limitiamo a stampare un campo sulla console)
    $campo = $rs.Fields.Item("NOME_CAMPO").Value
    Write-host "Il valore del campo è " $campo
    $rs.MoveNext()
}

Possiamo lanciare lo script cliccando sull'icona del file, oppure se siamo dentro una shell dei comandi digitando:

powershell -file elabora.ps1

Conclusioni

Applicando questa metodologia accedere ai files di Access si è rivelato abbastanza semplice, e soprattutto ho apprezzato il fatto di non aver avuto necessità di installare un Access completo.


← Tutti gli articoli