Copiar dados de um banco de dados para outro

A situação que tenho é a seguinte:

Tenho que copiar os registro de cada tabela de um banco de dados em outro banco de dados, os campos e tabelas são todas as mesmas.

Avaliando através das tabelas do sistema eu ia gerando strings de Insert e ia inserindo no outro banco.
Funciona, porém o desempenho fica horrível.

Então pensei e salvar primeiramente as strings de inserts por tabela em um array de Strings para depois ir inserindo no outro banco, mais também ficou muito lento
Alguém tem alguma idéia?

O banco tem umas 200 tabelas e a média fica em torno de 500000 registros.

Obrigado

Normalmente, quando se faz isso, usa-se alguma ferramenta do banco de dados. No caso do Oracle, por exemplo, pode-se usar IMP e EXP - as ferramentas exportam e importam dados para um formato especial. Isso pode ser comandado via programa também, é questão de ver a documentação do seu banco.

Se o SGBD for o mesmo, extrai o backup de uma instância e sobe na outra.

O SGBD não possui muitas ferramentas que me auxiliam neste processo.

Trabalho com Pervasive. Tenho realmente que fazer o processo manualmente.

http://ww2.pervasive.com/Database/Products/DataExchange/Pages/DataExchangeOverview.aspx

E você tem que permanecer com esse SGBD?

Caso tenha que ficar com ele, o esquema é fazer exatamente o que você falou, ler cada registro de cada tabela montando um script com o DML insert pra cada linha… (INSERT INTO …)

O MySql na suíte de ferramentas que ele disponibiliza, o backup funciona assim, gerando o tal script.

thingol, estou baixando o software e vou dar uma avalida.

Obrigado por enquanto

Acabei optando por utilizar stored procedure pelo banco de dados mesmo.

Pode trancar o tópico.

Nada iria bater o desempenho do proprio banco

O Pervasive é o sucessor do BTrieve, muito usado no tempo em que bancos de dados eram acessados por aplicações em C e Cobol. Ele foi um dos primeiros bancos de dados para micro e minicomputadores, e um dos primeiros a usar B-Trees; nesse tempo nem havia acesso SQL, se não me engano.

thingol, interessante sua citação. Não estava ciente disto.

O driver de conexão que é utilizado para conexão através dos softwares se chama Btrieve.