自动访问 DB5 到 MySQL

Posted

技术标签:

【中文标题】自动访问 DB5 到 MySQL【英文标题】:Access DB5 to MySQL automatically 【发布时间】:2008-10-28 11:37:30 【问题描述】:

我有一个问题,我希望我可以依靠这里的一些经验来获得建议并朝着正确的方向前进。我有一个由专有软件制作的 MS Access 文件。我只想从这个表中取出一半的列,并导入新的(尚未设置)mysql数据库。

我不知道该怎么做或最好的方法是什么。每晚都会获取新数据,然后作为自动任务再次导入。

access 数据库中的一列是 jpeg 文件的 url,我想下载此文件并作为 BLOB 类型自动导入数据库。

有没有办法自动做到这一点?这将在 Windows 机器上,所以也许可以用 WSH 编写脚本?

【问题讨论】:

【参考方案1】:

这是一个 bash 脚本 linux 示例,使用 mdbtools 自动提取并从 mdb 文件导入到 mysql。

#!/bin/bash

MDBFILE="Data.mdb"

OPTIONS="-H -D %y-%m-%d"
mdb-export $OPTIONS $MDBFILE  TableName_1 >  output_1.txt
mdb-export $OPTIONS $MDBFILE  TableName_2 >  output_2.txt

mdb-export $OPTIONS $MDBFILE  TableName_n >  output_n.txt

MYSQLOPTIONS=' --fields-optionally-enclosed-by=" --fields-terminated-by=, -r '
mysqlimport $MYSQLOPTIONS -L -uuser -ppasword database output_1.txt
mysqlimport $MYSQLOPTIONS -L -uuser -ppasword database output_2.txt
mysqlimport $MYSQLOPTIONS -L -uuser -ppasword database output_n.txt

您可以使用其他一些 mysqlimport 选项: --delete:从目标mysql表中删除以前的数据。 --ignore:忽略重复项 --replace:如果发现重复则替换

这不是 Windows 解决方案,但我希望它有所帮助。

【讨论】:

谢谢你的回答,你能再澄清一下吗,我会用我想要的所有表名替换 TableName 吗?会不会保证数据不会被导入两次? 我已经编辑了我的帖子。但是,是的,您需要将 TableName_n 替换为您想要的所有表名。你有一些 mysqlimport 选项来防止重复数据。 当您已经安装了正版 Jet 时,为什么还要在 Windows 机器上使用 MDBTools(Jet 是 Windows 的一个组件,因为它用作 Active Directory 的数据存储)?跨度> 正如我之前所说,这是一个 bash 脚本 LINUX 示例。我在一个 LINUX 盒子里。 “这不是 Windows 解决方案,但我希望它有所帮助。”【参考方案2】:

http://www.dbtalk.net/mailing-database-mysql-win32/what-quickest-way-convert-access-136837.html

搜索 Kofler(他写了一本德语书,其中一部分是 mdb2sql 转换器)

这是一个较新的版本。 http://www.amazon.de/Definitive-Guide-MySQL/dp/1590595351/ref=sr_1_3?ie=UTF8&s=books-intl-de&qid=1225197012&sr=8-3

【讨论】:

以上是关于自动访问 DB5 到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 将访问查询导出到制表符分隔文件不起作用

MySQL 后端和访问 (.accdb, 2013) 前端自动增量问题

mysql:插入数据和自动增量

Portainer 安装MySQL并开启远程访问

解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问

从 circle ci 访问 MySQL GCP 以自动化数据库迁移?