20

How can I open an ESRI Personal Geodatabase (*.mdb; ArcGIS 10.2) in QGIS 2.6 or above?

4
  • 4
    Have you tried this and received an error or are you asking if there's an option available to open ESRI PGDB in QGIS 2.6? The option is available in Layer > Add Layer > Add Vector Layer > Database > select ESRI Personal GeoDatabase as Type
    – Joseph
    Commented Jan 8, 2015 at 11:09
  • 1
    Are you using 64 bit version of QGIS on Windows?
    – nmtoken
    Commented Mar 20, 2015 at 12:51
  • I've tried to do this but doesn't allow me to save the qgis.bat file with the changes. Any idea? Thanks
    – NandoSC
    Commented Sep 17, 2015 at 13:23
  • It can depend on the OS. The QGIS on Mac's gdal doesn't seem to do manage it.
    – Dave X
    Commented Mar 9, 2023 at 19:10

4 Answers 4

25

If you have installed a 64-bit version of QGIS on Windows and you find that Personal GeoDatabases (*.mdb) no longer work for you, then this solution might apply; I'm on QGIS 2.8.1 rather than 2.6, but I assume that the issue and thus the solution is the same.

The underlying issue relates to this GDAL bug: Problem reading MDBs (64-bit)

Step 1

Download the 64-bit version of the ODBC driver: Microsoft Access Database Engine 2010 Redistributable

If you don't have a 32-bit version of office installed you can just run the executable. If however you do have a 32-bit office installation you will need to run the executable from a command prompt using the /passive option

Installing 64-bit Access Database Engine 2010 Redistributable in passive mode

Step 2

Locate the qgis.bat file (mine is in C:\OSGeo4W64\bin\qgis.bat for example).

Add the following two lines:

set OGR_SKIP=ODBC
set PGEO_DRIVER_TEMPLATE=DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%%s

Step 3

Open QGIS and drag the mdb file onto your workspace

Voila!

1
  • 1
    This just worked for me on 64-bit QGIS 3.0.0 on Windows 8.1. Commented Mar 21, 2018 at 23:29
14

Provided you have successfully installed Microsoft Access Database Engine 64 bit, you can:

Method 1 (works with QGIS 3)

In QGIS Settings panel -> Options | System | Environment add the following two variables:

variable name: OGR_SKIP 
value: ODBC

variable name: PGEO_DRIVER_TEMPLATE 
value: DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s

and check the "Use custom variables" checkbox

note that in this case there is only one percent sign in the value of PGEO_DRIVER_TEMPLATE variable

Method 2 (works with both QGIS 2 and QGIS 3)

In the Environment Variables panel of the Windows Advanced System Settings, set the following two new variables as User Variables or System Variables:

variable name: OGR_SKIP 
value: ODBC

variable name: PGEO_DRIVER_TEMPLATE 
value: DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s

note that also in this case there is only one percent sign in the value of PGEO_DRIVER_TEMPLATE variable

Method 3 (works with QGIS 2)

add the following two lines:

set OGR_SKIP=ODBC
set PGEO_DRIVER_TEMPLATE=DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%%s

in your qgis.bat / qgis-grass7.bat / qgis-ltr.bat / qgis-ltr-grass7.bat before the last line, that usually is something like

start "QGIS" /B "%OSGEO4W_ROOT%"\bin\qqis...

note that there are two percent signs in the value of PGEO_DRIVER_TEMPLATE variable

0
2

In Debian and derivatives (may also work in Windows) with the latest QGIS (e.g. 3.16.11) and GDAL (e.g. 3.3.2) Personal Geodatabases (.mdb) could be added in three ways. However, ODBC and Geomedia drivers must be skipped by GDAL/OGR via Settings>Options>GDAL>Vector Drivers dialog:

enter image description here

Thereafter any of these approaches should work:

  1. drag and drop the file into the QGIS canvas
  2. expand the database file via Browser (Layer>Datasource Manager>Browser)
  3. as an ODBC database with a connection string:

create a ~/.odbc.ini with:

[my_dataset]
Driver      = Microsoft Access Driver (*.mdb)
Database    = /path/to/my.mdb

create a ~/odbcinst.ini if GDAL has not created it yet with:

[Microsoft Access Driver (*.mdb)]
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
FileUsage=1
UsageCount=50

in QGIS : Add Layer > Vector > Database > Type: Esri Personal Geodatabase > New

PGeo connection

Reference

https://gdal.org/drivers/vector/pgeo.html

3
  • Not working with QGIS 3.22.16 on Debian 12. Is there something I need to install besides apt install qgis?
    – Dave X
    Commented Feb 20 at 19:51
  • ... apt install qgis odbc-mdbtools seemed sufficient per gdal.org/drivers/vector/pgeo.html to allow drag and drop through the same pass-the-file-name-mechanism as its "Alternatively, you can pass a .mdb filename directly to OGR to avoid manual creation of the DSN."
    – Dave X
    Commented Feb 20 at 20:19
  • 1
    @DaveX I wrote that part of gdal doc as a follow-up to this answer. see github.com/OSGeo/gdal/pull/4558 Commented Feb 21 at 12:32
1

The solution proposed works fine also on windows 10. Only a further suggestion for adding the two line to the qgis.bat file.

The two line are setting. So it is important to add the lines before the start of the command.

Probably it is undestood but if you are not careful, there is a risk of being mistaken.

1
  • Since this is the most recent answer I want to comment that it works but I can only get to load the feature classes (vector layer) but I do not see how to load the tables and relationships contained inside the mdb. Feature datasets are also ignored.
    – nanunga
    Commented Jun 14, 2018 at 0:44

Not the answer you're looking for? Browse other questions tagged or ask your own question.