Voor al mijn Linux broeders die net als ik het probleem hebben dat school wil dat ze windows en access gebruiken.
Wat heb je nodig:
- mdbtools
- terminal
Stap 1:installeer mdbtools
$ sudo apt-get install mdbtools
Stap 2:Gooi deze code in een nieuw documentje en noem het "mdb2mysql.sh"
#!/bin/sh
if [ $# -ne 4 ]; then
echo "usage: $0 msaccess.mdb mysqldb mysqluser mysqlpass"
exit
fi
MDB_FILE=$1
MYSQL_DBNAME=$2
MYSQL_USER=$3
MYSQL_PASS=$4
MYSQL_IMPORT=/tmp/`basename $MDB_FILE .mdb`.sql
>$MYSQL_IMPORT
# create database
echo "DROP DATABASE IF EXISTS $MYSQL_DBNAME;" >> $MYSQL_IMPORT
echo "CREATE DATABASE $MYSQL_DBNAME; " >> $MYSQL_IMPORT
echo "USE $MYSQL_DBNAME; " >> $MYSQL_IMPORT
# import table structures with mysql data types
mdb-schema -S $MDB_FILE mysql >> $MYSQL_IMPORT
perl -p -i -e 's/-----*/--/g' $MYSQL_IMPORT
perl -p -i -e 's/DROP TABLE (.*)/DROP TABLE IF EXISTS $1/gi' $MYSQL_IMPORT
# Fix the Variables
#perl -p -i -e 's/Text/VARCHAR/g' $MYSQL_IMPORT
#perl -p -i -e 's/Long Integer/INT(11)/g' $MYSQL_IMPORT
# import data
for TABLE in `mdb-tables $MDB_FILE`
do
mdb-export -R';' -I $MDB_FILE $TABLE >> $MYSQL_IMPORT
done
mysql -u$MYSQL_USER -p$MYSQL_PASS < $MYSQL_IMPORT
if [ $? -ne 0 ]; then
echo ""
echo "Fix the script at $MYSQL_IMPORT"
echo ""
echo "Run it using following command"
echo "mysql -u$MYSQL_USER -p$MYSQL_PASS < $MYSQL_IMPORT"
else
echo ""
echo "DONE. Script used is: $MYSQL_IMPORT"
echo ""
echo "Remove it if you no longer need it"
fi
Voer de code als volgt uit:
sh mdb2mysql.sh <eenmdb.mdb> <mysqldatabase> <mysqlgebruiker> <mysqlwachtwoord>
Tadaa je mdb file is nu netjes in een mysql database geplaatst.