![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наполнение таблицы из текстового файла. [D5, MySQL, ]
Genry © (2002-01-22 12:19:00)Здравствуйте господа. Возникла следующая проблема - необходимо из текстового файла слить данные в таблицу (допустим MySQL). Всего получается порядка 300 тыс. записей. Конструкция типа:
qrMyQuery: TZMySQLQuery;
s := Format("insert into mytbl(myField1, myField2) values (mySomeValue1, mySomeValue2);
qrMyQuery.SQL.Clear;
qrMyQuery.SQL.Add(s);
qrMyQuery.ExecSQL;
работает очень медленно.
Вопрос: можно-ли оптимизировать эту процедуру по скорости. Желательно работать именно с компонентом TQuery и SQL-запросами.
Заранее спасибо.
amamed_3071 (2002-01-23 10:12:00) [1]qrMyQuery.SQL.Clear;
WHILE NOT EOF(TEXTFILE) DO
bEGIN
...READ FROM FILE AND SET VULUES
if flgSomeFlag1 then
s := Format("insert into mytbl(myField1, myField2) values (mySomeValue1, mySomeValue2);
if flgSomeFlag2 then
s := Format("update mytbl set SomeField1="%s", SomeField2="%s", where SomeField3=%d;", [strSomeValue1, strSomeValue2, dSomeValue3]);
qrMyQuery.SQL.Add(s);
END
qrMyQuery.ExecSQL;
Фэ (2002-01-23 01:29:00) [2]Ну и заведи два TQuery: на Update и на Insert и попробуй их с параметрами
Genry (2002-01-22 13:59:00) [3]To ФЭ -> Разница конечно есть, поскольку, в данном слечае, не будет каждый раз производиться проверка запроса, но в моем случае это не подходит (или я не знаю как это использовать). Дело в том, что после разбора очередной строки из файла мне надо делать либо INSERT либо UPDATE. Иными словами:
if flgSomeFlag1 then
s := Format("insert into mytbl(myField1, myField2) values (mySomeValue1, mySomeValue2);
if flgSomeFlag2 then
s := Format("update mytbl set SomeField1="%s", SomeField2="%s", where SomeField3=%d;", [strSomeValue1, strSomeValue2, dSomeValue3]);
qrMyQuery.SQL.Clear;
qrMyQuery.SQL.Add(s);
qrMyQuery.ExecSQL;
Romul (2002-01-22 13:54:00) [4]А попробуй команду BULK INSERT (MSSQL2000). Она как раз для вставки из текстовых файлов в таблицу (массивного копирования). Правда сам я ей не пользовался, так что конкретнее не могу сказать.
Фэ (2002-01-22 13:45:00) [5]Попробуй через параметры
ParamByName("NAME").AsString := ednName.Text;