you need not write any scripts, just use MySQL Front to Import/Export dat from M$ Access
"zzapper" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi Ya, > > How to this has always been somewhat fuzzy in my head. I looked around > for tools unsuccessfully . So I thought I'd share my solution. > > I've just written a simple Perl script to do this, this uses DBI:mysql > to write to mysql and DBI:ODBC to read from Access. I suppose it could > be rewritten in PHP as well. > > > The tables map practically one to one, but the script could easily be > adapted for a more complex conversion. I presume it could be adapted > to do a reverse conversion as well. > > Any suggestions/improvements welcome > > #!/usr/local/bin/perl > # convert.pl > # description : Copy Access Database via DBI:ODBC to MySQL > # V1.0 07/01/2004 > > my $dsn="group"; > my $dsn_mysql="group"; > my $table="group"; > my $table_dest="ytbl_agents"; > my $db; # database handle > my $db_dest; # database handle > > $delete_sql=qq|DROP TABLE IF EXISTS ytbl_agents|; > $recreate_table =qq| > CREATE TABLE ytbl_agents ( > intID mediumint(9) unsigned NOT NULL auto_increment, > txtRegion varchar(60) default NULL, > txtCompany varchar(60) default NULL, > txtContact varchar(60) default NULL, > txtAddress text, > txtTown varchar(60) default NULL, > txtCounty varchar(60) default NULL, > txtPostCode varchar(20) default NULL, > txtPhone varchar(60) default NULL, > txtFax varchar(50) default NULL, > txtEmail varchar(60) default NULL, > txtWeb varchar(60) default NULL, > dtmDate timestamp(14) default NULL, > PRIMARY KEY (intID) > ) TYPE=MyISAM; > |; > > # YYYYMMDDHHMMSS > ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = > localtime(time); > $year+=1900; $mon++; > $mysql_timestamp = sprintf( > "%04d%02d%02d%02d%02d%02d",$year,$mon,$mday,$hour,$min,$sec); > #-------------------------------------------------------------# > > &open_access_db(); > &open_mysql_db(); > $cnt=&fn_read_access_db(); > &fn_write_to_mysql(); > print "\n$cnt records imported to mysql database $dsn_mysql (table > $table_dest)\n"; > $db->disconnect(); > $db_dest->disconnect(); > > #-------------------------------------------------------------# > > sub open_access_db() > { > use DBI; > use DBD::ODBC; > > my $emsg="Could not access the Database\n Could not open DSN $dsn"; > > $db = DBI->connect( "dbi:ODBC:$dsn", "", "", > {RaiseError => 1, > PrintError => 1, > AutoCommit => 1, > LongReadLen => 4000} ) or > do > { > print ("$emsg: " . $DBI::errstr .__LINE__."\n"); > exit; > } > } > #-------------------------------------------------------------# > > > sub open_mysql_db() > { > use DBI; > use DBD::MYSQL; > > my $emsg="Could not access the Database\n Could not open DSN > $dsn_mysql"; > > $db_dest = DBI->connect( "dbi:mysql:$dsn_mysql", "", "", > {RaiseError => 1, > PrintError => 1, > AutoCommit => 1, > LongReadLen => 4000} ) or > do > { > print ("$emsg: " . $DBI::errstr .__LINE__."\n"); > exit; > }; > ### delete table > $sel_dest = $db_dest->prepare( "$delete_sql" ); > $sel_dest->execute() or &webdie("\n$delete_sql \n: ".$DBI::errstr." > line ".__LINE__); > ### recreate table > my $sel_dest = $db_dest->prepare( "$recreate_table" ); > $sel_dest->execute() or &webdie("\n$recreate_table \n: > ".$DBI::errstr." line ".__LINE__); > > } > #-------------------------------------------------------------# > sub fn_read_access_db > { > my $sql=qq|select * from "$table" |; > my $emsg="$sql"; > my $sel = $db->prepare( "$sql" ); > $sel->execute() or &webdie("$emsg : ".$DBI::errstr." line > ".__LINE__); > > @results=(); > while (my $ref=$sel->fetchrow_hashref) > { > push @results, {%$ref}; # array of hashes > undef $ref; > } > return $#results+1; > } > #-------------------------------------------------------------# > sub fn_write_to_mysql() > { > my $cols =qq|txtRegion, txtCompany, txtContact, txtAddress, txtTown, > txtCounty, txtPostCode|; > $cols.=qq|, txtPhone, txtFax, txtEmail, txtWeb, dtmDate|; > for my $resid (0 .. $#results) > { > my $ID= $results[$resid]{"ID"}; > my $region=escsql($results[$resid]{"region"}); > my $company=escsql($results[$resid]{"company"}); > my $contact=escsql($results[$resid]{"contact"}); > my $address=escsql($results[$resid]{"address"}); > my $town=escsql($results[$resid]{"town"}); > my $county=escsql($results[$resid]{"county"}); > my $postcode=escsql($results[$resid]{"postcode"}); > my $tel=escsql($results[$resid]{"tel"}); > my $fax=escsql($results[$resid]{"fax"}); > my $email=escsql($results[$resid]{"email"}); > my $web=escsql($results[$resid]{"web"}); > > my $vals > =qq|'$region','$company','$contact','$address','$town','$county','$postcode','$tel','$fax','$email','$web'|; > $vals.=qq|,'$mysql_timestamp'|; > #print $cols; print "\n".$vals; exit; > my $sql=qq|insert into $table_dest |; > $sql.=qq| ($cols) values ($vals) |; > my $sel_dest = $db_dest->prepare( "$sql" ); > $sel_dest->execute() or &webdie("\n$sql \n: ".$DBI::errstr." line > ".__LINE__); > } > } > #-------------------------------------------------------------# > sub escsql() > { > my ($inputstr) = @_ ; > return "" if (!defined($inputstr)) ; > $inputstr =~ s/\\/\\\\/g; > $inputstr =~ s/\"/\\"/g; > $inputstr =~ s/\'/\\'/g; > return($inputstr) ; > } > #-------------------------------------------------------------# > > zzapper (vim & cygwin & zsh) > -- > > vim -c ":%s/^/WhfgTNabgureRIvzSUnpxre/|:%s/[R-T]/ /Ig|:normal ggVGg?" > > http://www.vim.org/tips/tip.php?tip_id=305 Best of Vim Tips > > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] >