DBF metadata + DBFAnalyzer

I am trying to read DBF file.

Wizard for metadata extraction doesn’t work. It reads data, shows me table, finds encoding, but when i press “Next” nothing happens.

So i tried saving dbf as xls file, extract data from there and tried to read it again. I had to add first column to metadata extracted from xls. After this DBFReader read something. Number of records is correct, but all records are completly empty. I think it is because i extracted metadata from xls, but i am not sure.

I tried extract metadata with DBFAnalyzer, but that also did not work. I am getting NullPointerException while initializing Clover engine

Exception in thread "main" java.lang.NullPointerException at org.jetel.plugin.Plugins.init(Plugins.java:79) at org.jetel.graph.runtime.EngineInitializer.initEngine(EngineInitializer.java:71) at org.jetel.database.dbf.DBFAnalyzer.main(DBFAnalyzer.java:279)

So, i have 2 questions :
1. how can i get metadata from DBF file?
2. Why is it that all records read by BFRReader are totally empty?

I have attached a sample Clover project which reads two different DBF files - just for your reference.

The metadata extraction wizard in the designer should work - especially if you say that it correctly shows preview of the data.

When you manually create the metadata you need to provide correct lengths of individual fields in bytes (attribute size) and also put 1 byte long field
as a first field to cater for record deletion flag.

Can you summarize your use-case and send it together with a sample DBF file you are trying to read to support@cloveretl.com so we can analyze where the problem is ?
Also, if possible, in the designer, open “Error Log” view (menu “Window->Show View->Other->General/ErrorLog”) and look for any error there.

Your project works fine, thank you.

It looks like there is some problem with my DBF files. I am not able to extract metadata from them in Clover. When I press “Next” button in metadata wizards, there is an exception in error log.


Message : "Unhandled event loop exception".

com.cloveretl.commons.AssertException: Unknown page follows
at com.cloveretl.commons.Assert.fail(Assert.java:77)
at com.cloveretl.gui.wizard.metadata.dbf.A.getNextPage(Unknown Source)
at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:887)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:426)
at com.cloveretl.gui.wizard.x.buttonPressed(Unknown Source)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at com.cloveretl.gui.actions.AddMetadataAction.openWizardDialog(Unknown Source)
at com.cloveretl.gui.actions.AddMetadataAction.run(Unknown Source)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Unfortunetly i can’t provide DBF file, because it contains sensitive data.
I have written utility that creates metadata for me. After importing metadata i am able to read my DBF files.

Glad it works for you - at least somehow.

We will check what can be causing the error, however without the test data it will be difficult (just guessing).

What system is producing your DBF files (FoxPro/FoxBase, etc. ; which version) ? If possible, could you try to create/get one DBF with some dummy data ?

Thanks.

Also, can you see any other exceptions in the log, some that might have occurred before the one you pasted?

Thank you for the feedback.

hallo,
i was very busy, so i could not post answer sooner…

Exception i posted is only exception in log.
Customer agreed to use his file for debug purposes, so i will send to mr. dpavlis via pm.

As of origin of the file, i am not sure about application. I know that is some version of Fox database. When i try to extract metadata, Clover says it is FoxBase+. I don’t know for sure.

Hi,

We got your file and started analyzing the issue. It looks like the field names use accented characters - which might be causing the problem.

PS: the post with the DBF file was deleted - as per your request.

Hi,

The field descriptors in the header of the file contain invalid characters. In the next version of CloverETL Designer, field names will be truncated after the first occurrence of 0x00 byte, which should fix the problem.