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

时间:2011-05-02 14:27:00

标签: mysql ms-access import export

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

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

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

  2. 直接从Toad制作“Access Database Export”

  3. 我认为第一个更快但数据完整性不太安全,而第二个是完美的数据完整性但很慢......有人知道其他方法吗?

    由于 A.

3 个答案:

答案 0 :(得分:2)

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

如果您正在运行MsAccess,我想您正在使用Windows

  1. 安装MySQL ODBC 5.1驱动程序(连接器)http://dev.mysql.com/downloads/connector/odbc/
  2. 在win machine上打开CONTROL PANEL
  3. ADMINISTRATIVE TOOLS(如果是Vista或Seven,搜索ODBC)
  4. 设置数据源ODBC
  5. SYSTEM DSN
  6. ADD
  7. 取决于您的服务器,您可能在查找服务器名称或IP时遇到一些困难,请查找SSH数据库连接(或类似的东西)。例如,阅读NetSol的常见问题解答:http://www.networksolutions.com/support/how-to-back-up-the-mysql-database-using-ssh/

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

    如果你想从MsAccess导出到MySQL,你可以在访问中创建一个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数据库" for" ODBC" (与法语合作)。

答案 1 :(得分:1)

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

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

我无法回想起ODBC驱动程序通常是安装默认设置,还是它们是否是单独的安装。我认为它们是默认安装的,但我可能是错的。

答案 2 :(得分:0)

感谢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