importação de dados em xml para o postgres

Pessoal, estou precisando criar um mecanismo que leia um arquivo xml com aproximadamento 500 mil registros, e transfira esse dados para o banco de dados postgres, qual seria a maneira mas rapida para transferir essas inforções contidade no arquivo e grava no banco de dados?
Já fiz um exemplo usando o a biblioteca JDO para trabalhar com xml e uma conexao usando PreparedStatement para salvar no bd, mas o resultado n foi satisfatorio.
realizei outro teste tive problema com memoria pois, eu estou colocando todo o conteudo em um lista. Alguem pode me ajudar pois tenho pouco tempo para solucionar esse problema.

O problema que vc tem é um exemplo classíco de ETL(Extração Transformação Carga) que além de ser um tarefas na construção de DW(Data Wharehouse) está sempre presente no cotidiano de desenvolvedore normais.

Venho usando a tempo o pentaho no em http://www.pentaho.com/, e sua solução ETL é o kettle. Ambas ótimas ferramentas.
O ketle foi renomeado para data integration, você encontra para download em http://sourceforge.net/projects/pentaho/files/.

Tu vai ter um ‘step’ de entrada que é teu xml e uma saída que uma tabela. Vai definir o esquema de ambas, os campos, seus tipos e tamanhos, pronto é só executar… ele vai fazer todo o trabalho p/ vc.

Se livre do parser do xml, das broncas de jdbc… deixe o ketle resolver p/ vc.

Boa sorte

[quote=thiagoAraujo_al]O problema que vc tem é um exemplo classíco de ETL(Extração Transformação Carga) que além de ser um tarefas na construção de DW(Data Wharehouse) está sempre presente no cotidiano de desenvolvedore normais.

Venho usando a tempo o pentaho no em http://www.pentaho.com/, e sua solução ETL é o kettle. Ambas ótimas ferramentas.
O ketle foi renomeado para data integration, você encontra para download em http://sourceforge.net/projects/pentaho/files/.

Tu vai ter um ‘step’ de entrada que é teu xml e uma saída que uma tabela. Vai definir o esquema de ambas, os campos, seus tipos e tamanhos, pronto é só executar… ele vai fazer todo o trabalho p/ vc.

Se livre do parser do xml, das broncas de jdbc… deixe o ketle resolver p/ vc.

Boa sorte[/quote]

Thiago, onde eu possa arranjar um tutorial explicando detalhadamente, no meu caso, eu tenho que le o arquivo xml e inserir em uma tabelar, mas de inserir os dados tenho que apagar todo o conteudo, pois tenho quer fazer relatorios diarios.
Eu posso inserir esse processo em uma aplicação, pois nem sempre vai ser eu que vou usar essa ferramenta, e tenho que

Tutorial fácil assim não tenho, mas baixa a ferramenta vai na pasta samples que tem ambas asa tarefas que vc quer…
leitura de xml e output numa tabela.

Qq dúvida posta aqui.

[quote=thiagoAraujo_al]Tutorial fácil assim não tenho, mas baixa a ferramenta vai na pasta samples que tem ambas asa tarefas que vc quer…
leitura de xml e output numa tabela.

Qq dúvida posta aqui.[/quote]

Cara no meu caso o que eu uso como saida:
Insert/Update
Synchronize after merge
Table output
XML Output

Eu fui realizar um teste tendo com entrada o Get data from xml e como saida um Insert/Update, e deu esse error:
O mesmo quando fiz na mão, como eu poço solucionar esse problema?

Não foi possível abrir a janela de diálogo para este step
java.lang.OutOfMemoryError: Java heap space
	at org.dom4j.io.SAXContentHandler.characters(SAXContentHandler.java:299)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.dom4j.io.SAXReader.read(SAXReader.java:465)
	at org.dom4j.io.SAXReader.read(SAXReader.java:391)
	at org.pentaho.di.ui.trans.steps.getxmldata.GetXMLDataDialog.getLoopPathList(GetXMLDataDialog.java:1370)
	at org.pentaho.di.ui.trans.steps.getxmldata.GetXMLDataDialog.access$800(GetXMLDataDialog.java:84)
	at org.pentaho.di.ui.trans.steps.getxmldata.GetXMLDataDialog$6.widgetSelected(GetXMLDataDialog.java:600)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.pentaho.di.ui.trans.steps.getxmldata.GetXMLDataDialog.open(GetXMLDataDialog.java:1268)
	at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:123)
	at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:6274)
	at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:2296)
	at org.pentaho.di.ui.spoon.trans.TransGraph.access$100(TransGraph.java:150)
	at org.pentaho.di.ui.spoon.trans.TransGraph$6.mouseDoubleClick(TransGraph.java:454)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:945)
	at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:5574)
	at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:412)

Pelo cenário que descrevesse tu vai ter um XML Input, um output Table Output.
Nesse meio talvez tu precise de um Select Values p/ renomear os campos que estão vindo do XML input fazendo com que tenham os mesmos nomes e tipos da sua Table Output.

Sobre erro, tu deve fazendo algo errado. Com o kettle fazemos importações de milhões de registros.
Já fizemos cargas de 20 milhões de linhas sem problemas de memória.

Se continuar com problemas tu entras em contato comigo p/ email enviando o teu arquivo .ktr

Boa sorte

guilhr

Conseguiu resolver seu problema??