Здравствуйте.
Процедура RunSQL просто добавляет запрос в очередь запросов. Затем запросы последовательно берутся из очереди и отправляются на выполнение в СУБД. А выполнять запросы СУБД может сколько угодно, скорость выполнения зависит от конфигурации ПК, конфигурации СУБД, свободной оперативной памяти, сложности запроса и т.д.
В приведенном коде Вы посылаете отдельный запрос на вставку каждой строки и не удивительно, что эти запросы долго выполняются. Вместо этого нужно группировать строки в один запрос используя соответствующий синтаксис заложенный MySQL, например:
aQuery := 'INSERT INTO `tbl_name` (a, b, c) VALUES(1, 2, 3), (4, 5, 6), (7, 8, 9);';
, где tbl_name - имя таблицы в которую идёт вставка, a,b,c - колонки. Далее перечисление значений, которые нужно вставить. В данном примере производится вставка сразу трёх "строк". Подробнее про синтаксис можно прочесть на
официальном сайте MySQL. Также нужно учитывать, что есть ограничение на длину запроса и один запрос на все 10000 записей может оказаться слишком длинным, поэтому лучше группировать не все строки сразу, а группами, например по 500 штук.
Подскажите как надо правильно делать.
А зачем выполнять вставку данных из файла в БД через скаду? Это очень нестандартное решение для заполнения БД и нестандартное использование скады. Может быть лучше воспользоваться функцией импорта через MySQLWorkbench (см. вложение)?