[fpc-pascal] sqldb, copy table between databases is painfully slow
    Luca Olivetti 
    luca at ventoso.org
       
    Tue Feb 18 12:54:48 CET 2025
    
    
  
Hello,
I need to copy a table between an mssql database and a postgresql one.
I used a query to obtain the data, a datasource ponting to it and 
another query using the datasource, the sql being
   INSERT INTO table (f1,f2,f3...) values (:f1,:f2,:f3,....)
and then doing
   OrigTable.Open;
   PQTrans.StartTransaction;
   while not OrigTable.Eof do
   begin
     DestTable.ExecSql;
     OrigTable.Next;
   end;
   PQTrans.Commit;
   OrigTable.Close;
this works but it's too slow (it takes about 700ms for each ExecSql), 
because it's constantly preparing and unpreparing the statement.
If I manually prepare an insert statement for each original record and 
use it with ExecuteDirect it only takes 30ms, considering that I access 
the server through a vpn I think it's normal.
I'm quite sure it's a PEBKAC, so, is there a way to reduce the time for 
the ExecSql?
Bye
-- 
Luca
    
    
More information about the fpc-pascal
mailing list