Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Access database importeren in MySQL

Moos
3 antwoorden
  • Hallo allemaal, kan je een Miscosoft Access database importeren in een MySQL database?
  • ja.. dat kan….

    Wil je het makkelijk houden, kijk dan eens naar navicat :)
  • Ja hoor, bijv. door in Access tabelkoppelingen te maken naar tabellen in je MySQL-server en dan met wat queries de data over te zetten. Je hebt dan de MyODBC-driver nodig om de tabellen te kunnen koppelen: http://dev.mysql.com/downloads/ en queries als: INSERT INTO myTable1 SELECT * FROM Table1. Tabellen in MySQL aanmaken kan met de hand, maar ik heb nog een vba-functietje liggen waarmee je het kan automatiseren:
    [code:1:81746776b4]
    Public Function mdb2mysql(tablename As String)
    ' mysql tabel maken: xxtablename
    ' xxtablename koppelen in huidige db
    ' records overzetten
    ' tabelkoppeling wissen
    ' online tabel hernoemen

    DoCmd.Hourglass True

    myserver = "ipadres"
    myuser = "username"
    mypwd = "password"
    mydb = "dbname"

    connwstring = "Driver={MySQL ODBC 3.51 Driver};server=" & myserver & ";uid=" & myuser & ";pwd=" & mypwd & ";db=" & mydb & ";"
    Set connw = CreateObject("ADODB.Connection")
    connw.Open connwstring ' MySQL

    ' tabeldefinitie maken
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & tablename)
    q = "CREATE TABLE xx" & tablename & " ("
    counter = 0
    For Each fld In rs.Fields
    counter = counter + 1
    If counter > 1 Then q = q & ", "
    q = q & fld.Name & " "
    Select Case fld.Type
    Case 3 ' Integer
    q = q & "SMALLINT(6)"
    Case 4 ' Long
    q = q & "INT(11)"
    Case 6 ' Single
    q = q & "VARCHAR(5)"
    Case 5 ' Currency
    q = q & "VARCHAR(10)"
    Case 1 ' Yesno
    q = q & "TINYINT(4)"
    Case 7 ' Double
    q = q & "DOUBLE"
    Case 8 ' DateTime
    q = q & "DATE"
    Case 10 ' Text
    q = q & "VARCHAR(255)"
    Case 12 ' Memo
    q = q & "TEXT"
    End Select
    If counter = 1 Then q = q & " PRIMARY KEY"
    Next fld
    q = q & ")"
    ' Create temptable
    connw.Execute q

    ' Link to temptable
    Set tdf = CurrentDb.CreateTableDef("xx" & tablename)
    tdf.Connect = "ODBC;Driver={MySQL ODBC 3.51 Driver};server=" & myserver & ";uid=" & myuser & ";pwd=" & mypwd & ";db=" & mydb & ";"
    tdf.SourceTableName = "xx" & tablename
    CurrentDb.TableDefs.Append tdf

    ' Copy records
    CurrentDb.Execute "INSERT INTO xx" & tablename & " SELECT * FROM " & tablename
    ' Delete tablelink
    CurrentDb.TableDefs.Delete "xx" & tablename
    ' Delete old table
    connw.Execute "DROP TABLE " & tablename & ";"
    ' Rename new table
    connw.Execute "RENAME TABLE xx" & tablename & " TO " & tablename & ";"
    Set rs = Nothing

    DoCmd.Hourglass False
    End Function
    [/code:1:81746776b4]
    Noot: geen spaties of apostrofs in veldnamen, eerste kolom in Access krijgt de PK.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.