Копировать таблицы между базами данных в Cbuilder
Я пытаюсь оптимизировать мой код для копирования около 7000 записей из одной таблицы в другую.
SQLQuery1->Open();
while (!SQLQuery1->Eof)
{
Table1->Append();
Table1->FieldByName("terc1_cod")->Value = SQLQuery1->FieldByName("terc1_cod")->Value;
Table1->FieldByName("terc1_nome1")->Value = SQLQuery1->FieldByName("terc1_nome1")->Value;
Table1->FieldByName("terc1_nome2")->Value = SQLQuery1->FieldByName("terc1_nome2")->Value;
Table1->FieldByName("terc1_morada")->Value = SQLQuery1->FieldByName("terc1_morada")->Value;
Table1->FieldByName("terc1_local")->Value = SQLQuery1->FieldByName("terc1_local")->Value;
Table1->FieldByName("cdpst_cod")->Value = SQLQuery1->FieldByName("cdpst_cod")->Value;
Table1->FieldByName("terc1_nctrb")->Value = SQLQuery1->FieldByName("terc1_nctrb")->Value;
Table1->FieldByName("conc_descr1")->Value = SQLQuery1->FieldByName("conc_descr1")->Value;
Table1->FieldByName("freg_descr1")->Value = SQLQuery1->FieldByName("freg_descr1")->Value;
Table1->FieldByName("terc1_telef")->Value = SQLQuery1->FieldByName("terc1_telef")->Value;
Table1->FieldByName("terc1_telefax")->Value = SQLQuery1->FieldByName("terc1_telefax")->Value;
Table1->FieldByName("terc1_email")->Value = SQLQuery1->FieldByName("terc1_email")->Value;
Table1->FieldByName("terc1_estado")->Value = SQLQuery1->FieldByName("terc1_estado")->Value;
Table1->FieldByName("alfa01")->Value = SQLQuery1->FieldByName("alfa01")->Value;
Table1->Post();
SQLQuery1->Next();
ProgressBar1->StepIt();
}
SQLQuery1->Close();
SQLQuery1 - это соединение DBX с ODBC, а Table1 - это Mysql DB. Копирование 7000 строк занимает около 3 минут. Как я могу ускорить процесс?
1 ответ
Прошло много времени с тех пор, как я работал с этими компонентами, но то, как я это делал, было примерно так:
qryOracle->SQL->Clear();
qryOracle->SQL->Add( "select * from " + sSrcTable; );
qryOracle->Prepare();
qryOracle->Open();
tblDest->TableName = "whatever";
tblDest->BatchMove( frmData->sqlQ, batCopy );