in reply to Re: accessing MS Access databases
in thread accessing MS Access databases

I tested this script and — surprise! — it works.

#!perl use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Access'; my $database = 'D:\Database.accdb'; my $csv_file = 'D:\Data.csv'; my $tbl_name = 'Data'; my $db = Win32::OLE->new('Access.Application') or die "Cannot create Microsoft Access object\n"; $db->OpenCurrentDatabase($database); $db->DoCmd->TransferText(acImportDelim, '', $tbl_name, $csv_file, -1); $db->Quit(); exit 0;

It's remarkably fast, too.

The fifth argument to DoCmd->TransferText is the HasFieldNames parameter. -1 is True, which means the first line of the CSV file is a header.

The missing error checking is on-account-of-because I haven't figured it out yet. But I swear this script is slurping data into an Access database — quickly!