是否可以从Microsoft Access数据库创建SQL命令转储?我希望将此MDB文件转换为MySQL数据库以进行导入,因此不必执行CSV步骤。
我希望即使一个MSSQL转储文件仍然包含可行的SQL命令,但我对MSSQL一无所知,请告诉我。
Answers:
您想将mdb转换为mysql(直接传输到mysql或mysql dump)吗?
尝试使用一种名为Access to MySQL的软件。
访问MySQL是一个小程序,它将Microsoft Access数据库转换为MySQL。
- 向导界面。
- 将数据直接从一台服务器传输到另一台服务器。
- 创建一个转储文件。
- 选择要传输的表。
- 选择要传输的字段。
- 传输受密码保护的数据库。
- 支持共享安全性和用户级安全性。
- 索引的可选传输。
- 可选的记录转移。
- 字段定义中默认值的可选传输。
- 标识并传输自动编号字段类型。
- 命令行界面。
- 易于安装,卸载和升级。
请参阅前面提到的链接,获取带屏幕截图的分步教程。
如果您可以访问安装了mdbtools的Linux机器,则可以使用以下Bash shell脚本(另存为mdbconvert.sh):
#!/bin/bash
TABLES=$(mdb-tables -1 $1)
MUSER="root"
MPASS="yourpassword"
MDB="$2"
MYSQL=$(which mysql)
for t in $TABLES
do
$MYSQL -u $MUSER -p$MPASS $MDB -e "DROP TABLE IF EXISTS $t"
done
mdb-schema $1 mysql | $MYSQL -u $MUSER -p$MPASS $MDB
for t in $TABLES
do
mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql $1 $t | $MYSQL -u $MUSER -p$MPASS $MDB
done
要调用它,只需像这样调用它:
./mdbconvert.sh accessfile.mdb mysqldatabasename
它将导入所有表和所有数据。
AWK
和GREP
vars,并且将选项添加-b strip -H
到,mdb-export
因为我在mdb中有一些奇怪的OLE对象,并且因为标头是以前加载的。我想在某些情况下-b octal
也可以,但是在将二进制数据加载到mysql时遇到了麻烦。
IFS=$(echo -en "\n\b")
在shebang之后添加。
\%
而且\\%
不是为我做的……
{ echo ‘set autocommit=0;’; mdb-export ... ;echo ‘commit;’ } | mysql
可能会更快
我通过Nicolay77修改了脚本,以将数据库输出到stdout(Unix脚本的通常方式),以便可以将数据输出到文本文件或通过管道传递到我想要的任何程序。生成的脚本稍微简单一些,并且效果很好。
一些例子:
./mdb_to_mysql.sh database.mdb > data.sql
./mdb_to_mysql.sh database.mdb | mysql destination-db -u user -p
这是修改后的脚本(保存到mdb_to_mysql.sh)
#!/bin/bash
TABLES=$(mdb-tables -1 $1)
for t in $TABLES
do
echo "DROP TABLE IF EXISTS $t;"
done
mdb-schema $1 mysql
for t in $TABLES
do
mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql $1 $t
done
OSX用户可以通过遵循Nicolay77或mikkom使用该mdbtools效用。您可以通过Homebrew安装它。只需安装自制软件,然后再去
$ homebrew install mdbtools
然后创建家伙描述的脚本之一并使用它。我用过mikkom的,将我所有的mdb文件都转换成sql。
$ ./to_mysql.sh myfile.mdb > myfile.sql
(顺便说一下,其中包含多个表)
brew install mdbtools