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.