我正在尝试使用 CRBatchMove 使用 Delphi 2007 将旧数据库(MS Access)中的表导入 MySQL 服务器。
该程序通过 ODBC 连接从遗留数据库中获取数据,并使用 TADOTable.SaveToFile() 将其存储在本地硬盘驱动器上。程序的第二部分将该文件读入另一个 TADOTable 并使用 TCRBatchMove 将其传输到 MySQL 服务器(通过 DevArt 的 TMyTable)。在此过程中,由于某种原因,批处理移动似乎非常缓慢。
以下试验中的数据量约为 100,000 条记录,每条记录约 120 个字段。大多数字段是整数和 VARCHAR(每个 VARCHAR 小于 32 个字符)。
我得到的性能数据是:
Time taken to bring data to local file over ODBC connection: 17 seconds
Time taken to load data from local file into TADOTable: 3 seconds
Time taken by TCRBatchMove to move data from TADOTable to TMyTable: > 30 minutes
MySQL 服务器在开发机器(i7-2.8GHz)上本地运行,否则数据库非常快速)。
为什么批量移动将数据推送到 MySQL 服务器这么慢。有没有办法加快这项任务?还是有更好的方法来实现这一点?