【发布时间】:2011-08-09 00:23:02
【问题描述】:
是否可以从 Microsoft Access 数据库创建 SQL 命令转储?我希望将此 MDB 文件转换为 MySQL 数据库进行导入,这样我就不必经过 CSV 步骤。
我希望 MSSQL 转储文件仍然包含可用的 SQL 命令,但我对 MSSQL 一无所知,请告诉我。
【问题讨论】:
标签: mysql sql ms-access import dump
是否可以从 Microsoft Access 数据库创建 SQL 命令转储?我希望将此 MDB 文件转换为 MySQL 数据库进行导入,这样我就不必经过 CSV 步骤。
我希望 MSSQL 转储文件仍然包含可用的 SQL 命令,但我对 MSSQL 一无所知,请告诉我。
【问题讨论】:
标签: mysql sql ms-access import dump
你想把mdb转成mysql(直接转mysql或者mysql dump)?
试试名为Access to MySQL 的软件。
Access to 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 变量,我已经将选项 -b strip -H 添加到 mdb-export 因为我在 mdb 中有一些奇怪的 OLE 对象,并且因为之前加载了标头。我想在某些情况下-b octal 也可以,但是在将二进制数据加载到 mysql 时遇到了问题。
IFS=$(echo -en "\n\b")。
\% 和 \\% 不是为我做的...
{ echo ‘set autocommit=0;’; mdb-export ... ;echo ‘commit;’ } | mysql 可能更快
我修改了 Nicolay77 的脚本,将数据库输出到标准输出(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
【讨论】:
【讨论】:
brew install mdbtools
ERROR at line xxxx: Unknown command '\"'. 我可以通过替换所有出现在\"" 中的\" 来解决它,这样就成功了。