I'm trying to load some data from a dBase file with SSIS. I've never worked with dBase. The files are created by a third party application.
The database contains one table, C:\dbf\exceptions.dbf
In SSIS, I've created a Microsoft Jet 4.0 OLE DB Provider
, put in C:\dbf
as the file name, put in dBASE III
for the extended properties (the first byte of the file is 0x03
which indicates III accoring to this). The connection tests fine.
I then try to add an OLE DB source, using that connection manager. When I click on the Name of the table or the view:
dropdown, it correctly populates Exceptions
as the only table. If I select it and hit preview, I get
Exception from HRESULT: 0xC02020E8
Error at ETL Exceptions [OLE DB Source [1]]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.
Error at ETL Exceptions [OLE DB Source [1]]: Opening a rowset for "exceptions" failed. Check that the object exists in the database.
I can open the exceptions.dbf
file in DBF Viewer 2000 without any issue.
As far as I know there aren't any credentials that need to be entered (DBF Viewer 2000 doesn't ask for any, and I can update rows without issue), but the connection manager insists on filling in Admin
for the username.
Update: according to DBF Viewer 2000, the file type is FoxBase+/dBASE III PLUSE, no memo
Update 2 I tried opening some of the other tables the application generates. Some open, some give that error.
I've found a workaround. By changing the provider to Microsoft OLE DB Provider for Visual FoxPro
, entering the directory path, and leaving everything else default, I can now open the table. I now get the warning:
The component reported the following warnings:
Warning at {FBAE0F44-DE41-4862-8C53-228C63D87A01} [OLE DB Source [1]]: Cannot retrieve the column code page info from the OLE DB provider. If the component supports the "DefaultCodePage" property, the code page from that property will be used. Change the value of the property if the current string code page values are incorrect. If the component does not support the property, the code page from the component's locale ID will be used.
Choose OK if you want to continue with the operation.
Choose Cancel if you want to stop the operation.
Which is perfectly acceptable since we're all about the 1252.