Home > linux > mdb2mysql

mdb2mysql

febbraio 4, 2010

Ecco come convertire un file MS Access (mdb)  dentro un database mysql

1. Installare il pacchetto mdbtool e se non lo si ha già anche mysql

sudo aptitude install mdbtool mysql -y

2. Crearsi un utente mysql con username identico al profilo e disabilitare la password, questo server per effettuare le operazioni più velocemente senza digitare la password ogni volta. Ma non è il massimo se lo vediamo dal punto di vista della sicurezza…

echo "CREATE USER '$USERNAME'@localhost IDENTIFYED BY '';" | mysql -u root
echo "GRANT ALL PRIVILEGES ON *.* TO '$USERNAME'@'localhost' | mysql -u root

3. Eseguire lo script mdb2mysql per convertire il file in una struttura SQL:

#!bin/bash
# Author: s@mba - GPLv3

usage(){
 if [ "$@" != "" ] ;then
 echo "$@"
 else
 echo "$0 [ option ] [ file.mdb ]
 Usage
 -help        Show this help
 -debug        Print in debug mode
 -view        Print only what to do
 -db        Set the new DB to create in mysql
 "
 fi
 exit 1
}
which mdb-schema 2>&1 /dev/null || usage "Before install mdbtool!"
which mysql 2>&1 /dev/null || usage "Before install mysql!"
[ $# -eq 0 ] && usage

while $[ $# -ne 1 ];do
 case $1 in
 -d|-db)    DBNAME=$1
 ;;
 -view)    VIEW=1
 ;;
 -debug)    DEBUG=1
 ;;
 *)    usage
 esac
 shift
done

[ $# -eq 0 ] && usage "Specify file.mdb !"

MDBFILE=$1    

[ $VIEW ] && echo "1. Get the schema and create in DB '$DBNAME'"
[ $DEBUG ] && mdb-schema $MDBFILE mysql 

# This works only if run mysql with your username and profile is NOPASSOWRD
mdb-schema es1.mdb mysql   | grep -vE "DROP|^-"  | mysql -f  $DBNAME

[ $VIEW ] && echo "2. Export data from $MDBFILE to $DBNAME"
for i in $(mdb-tables $MDBFILE);do
 mdb-export -I -R ';\n' $MDBFILE $i
done > $FILE_EXPORT
[ $DEBUG ] && cat $FILE_EXPORT

cat $FILE_EXPORT | mysql -f $DBNAME

[ $? -eq 0] && echo "Export Successfully!" || echo "Error: some problem in export operation"
exit 0

provare per credere…

Categorie:linux Tag:, , , , , , ,