I’m working with an Access database that has a products table. One of the fields contains jpeg images stored as OLE Objects. I need to move this data over to MySQL but I’m running into problems.
I tried using MySQL’s migration wizard but it has known problems with Access OLE Objects. The migration completes but all the image fields end up empty. I also attempted another method I found online and while the data does transfer, the images get damaged somehow. When I look at the imported images I only see binary data, and if I export them as jpg files they won’t open because they’re corrupted.
The original images in Access work perfectly and display correctly. Access stores them as OLE Objects and MySQL puts them in MediumBlob columns after import.
Has anyone dealt with this problem before? What approach worked for you to successfully migrate OLE image data from Access to MySQL without corruption?
Had this exact problem migrating a product catalog from Access to MySQL last year. Access wraps JPEG data in OLE headers that MySQL can’t read properly. I wrote a small C# app that connected to both databases at once. It’d read each OLE object from Access, strip the OLE wrapper by finding the actual JPEG header bytes, then dump the clean image data straight into MySQL BLOB fields. You’ve got to search for the JPEG magic bytes (FF D8 FF) in the OLE data to find where the real image starts. Worked perfectly - processed 3000 product images in about two hours with zero corruption.
ole objects in access are super annoying! they add metadata that messes with your images. you need to remove that ole wrapper before moving to mysql. try looking up some vba code for extracting the jpeg bytes from those ole fields. it can really help!
Had this exact problem migrating an old inventory system. Access stores extra OLE metadata with the image data, which corrupts files during transfer. Here’s what worked: I used a VBA script to export the images from Access first - it extracts just the image bytes, then you import those clean files into MySQL separately. I wrote a simple VBA function that loops through each record, saves the OLE object as a temp file, then uses file I/O to grab the raw image data without the OLE wrapper. Takes longer but keeps the images intact. The trick is doing the extraction in Access itself instead of trying to fix corrupted data later.