将 mysql 表导出到 ms Access 表中的最快/安全方式

Posted

技术标签:

【中文标题】将 mysql 表导出到 ms Access 表中的最快/安全方式【英文标题】:fastest/secure way for export mysql tables into ms Access table 【发布时间】:2011-05-02 14:26:59 【问题描述】:

我正在寻找一种将一些 mysql 表导出到 MsAccess DB 的其他表中的方法(我说的是一百万条记录表......)

我想到的唯一两种方法是:

    从 myadmin 或 toad 导出 csv 文件,然后将其导入访问数据库。

    直接从 Toad 制作“Access 数据库导出”

我知道第一个速度更快但数据完整性不太安全,而第二个非常适合数据完整性但速度很慢......有人知道其他方式吗?

谢谢 答:

【问题讨论】:

【参考方案1】:

在网络服务器上使用 MySQL 数据库运行 Access 前端应用程序的分步指南(您不需要导入表,您可以在网络服务器上使用您的 msaccess 应用程序):

如果你正在运行 MsAccess,我想你正在使用 windows

    安装 MySQL ODBC 5.1 驱动程序(连接器)http://dev.mysql.com/downloads/connector/odbc/ 在win机器上打开控制面板 管理工具(如果是 Vista 或 7,请搜索 ODBC) 设置数据源 ODBC 系统 DSN 添加

根据您的服务器,您可能很难找到服务器名称或 IP,寻找 SSH 数据库连接(或类似的东西)。例如,阅读 NetSol 的常见问题解答:http://www.networksolutions.com/support/how-to-back-up-the-mysql-database-using-ssh/

完成此操作后,在 MsAccess 中: 1. 文件 2. 外部数据源 3. 链接表

如果你想从 MsAccess 导出到 MySQL,你可以在 access 中创建一个 FORM,在上面放一个按钮,然后在 VBA 中为 OnClick() 事件创建这个子:

Dim sTblNm As String
Dim sTypExprt As String
Dim sCnxnStr As String, vStTime As Variant
Dim db As Database, tbldef As DAO.TableDef

On Error GoTo ExportTbls_Error

sTypExprt = "ODBC Database"
sCnxnStr = "ODBC;DSN=DSNname;UID=userOnServer;PWD=pwdOnServer"
vStTime = Timer
Application.Echo False, "Visual Basic code is executing."

Set db = CurrentDb()

For Each tbldef In db.TableDefs
Debug.Print tbldef.Name
sTblNm = tbldef.Name
DoCmd.TransferDatabase acExport, sTypExprt, sCnxnStr, acTable, sTblNm, sTblNm
Next tbldef

MsgBox "Done!"
On Error GoTo 0
SmoothExit_ExportTbls:
Set db = Nothing
Application.Echo True
Exit Sub

ExportTbls_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ExportTblsODST"
Resume SmoothExit_ExportTbls

有时,在运行非英语窗口时,您可能会收到错误 2507,请将“ODBC 数据库”更改为“ODBC”(适用于法语)。

【讨论】:

非常有用:“将“ODBC 数据库”更改为“ODBC”(适用于法语)” c'est ce que j'ai trouvé avec mon xp en francais.【参考方案2】:

如果您对 MySQL 具有 ODBC 访问权限,并且您的服务器在您的网络上,您可以从 Access 中导入其表。我认为菜单选择是“文件|获取外部数据|导入”。

对于“文件类型”,选择“ODBC 数据库”。您可能需要创建一个新的 DSN 名称。

我不记得 ODBC 驱动程序通常是默认安装还是单独安装。我认为它们是默认安装的,但我可能错了。

【讨论】:

谢谢,我给你发一些问题。 “ODBC 访问 MySql”是 ODBC 的一些扩展吗?我必须安装它吗?我在分离的机器上工作,访问数据库在我的 Windows PC 上,mysql 数据库在其他 linux 机器上....【参考方案3】:

感谢 Tony 提供了非常棒的省时脚本。因为我用前缀“tbl”命名我的表,所以我修改了代码,所以它只会导出那些表(而不是那些看起来很奇怪的表):

Private Sub Command0_Click()
Dim sTblNm As String
Dim sTypExprt As String
Dim sCnxnStr As String, vStTime As Variant
Dim db As Database, tbldef As DAO.TableDef
Dim str As String

On Error GoTo ExportTbls_Error

sTypExprt = "ODBC Database"
sCnxnStr = "ODBC;DSN=proxmox decaoriginal;UID=matantan;PWD=majadero5"
vStTime = Timer
Application.Echo False, "Visual Basic code is executing."

str = "tbl"

Set db = CurrentDb()

For Each tbldef In db.TableDefs
Debug.Print tbldef.Name
If Left(tbldef.Name, 3) = str Then
sTblNm = tbldef.Name
DoCmd.TransferDatabase acExport, sTypExprt, sCnxnStr, acTable, sTblNm, sTblNm
Else
End If
Next tbldef

MsgBox "Done!"
On Error GoTo 0
SmoothExit_ExportTbls:
Set db = Nothing
Application.Echo True
Exit Sub

ExportTbls_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure  ExportTblsODST"
Resume SmoothExit_ExportTbls
End Sub

【讨论】:

以上是关于将 mysql 表导出到 ms Access 表中的最快/安全方式的主要内容,如果未能解决你的问题,请参考以下文章

将 MS Access 数据库导出到 Mysql 的命令

如何将数据库从 MS access 2007 导出到 MySQL? [关闭]

将值导出到 Excel MS Access

通过中间处理从 MS Excel 导出到 MS Access

从 MS Access 导入数据

如何将从 ms 访问表中检索到的记录插入到 sql server 表中?