Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];

Вниз

Как можно быстро програмно загрузить в базу 600 записей так как 600 раз такой код выполняетсся долго   Найти похожие ветки 

 
Alextov   (2002-02-07 19:39) [0]

Как можно быстро програмно загрузить в базу 600 записей
так как 600 раз такой код выполняетсся долго

Query1.Close;
Query1.SQL.Clear;
Query1.Add("insert into Table (field1,field2) values (value1,value2)");
Query1.ExecSql;

Хотелось бы как-то за 1 раз все загрузить и 1 раз закомитить.


 
Desdechado   (2002-02-07 20:11) [1]

сделай хранимую процедуру и запусти ее - будет быстро.
а если не знаешь заранее, что нужно вставлять, то ничего не поделаешь :))
а с транзакциями так:
database.starttransaction;
try
// твой код
database.commit;
except
database.rollback;
end;



 
Shaman_Naydak   (2002-02-07 20:20) [2]

ну в принципе, можно чуть-чуть поиграться
Написать так скажем:

Query1.SQL.Text:="insert into Table (field1,field2) values (:value1, :value2)";
Query1.Prepare
а дальше в цикле делаешь

Query1.ParamByName("value1").AsInteger:=213;
Query1.ParamByName("value2").AsInteger:=444;
Query1.ExecSQL;
или побыстрее, но менее читабельно
Query1.Params[0].AsInteger:=213;
Query1.Params[1].AsInteger:=444;
Query1.ExecSQL;

Но не факт, что сильно поможет :)


 
Дремучий   (2002-02-07 21:47) [3]

2 Alextov (07.02.02 19:39)
можно, только если все записи известны изначально
если записи грузяться из другой таблицы или запроса

Query1.Close;
Query1.SQL.Clear;
Query1.Add("insert into Table (field1,field2)")
Query1.Add("select field1,field2 from Table2 where ....");
Query1.ExecSql;

что-то вроде этого...
;)


 
tovSuhov   (2002-02-20 14:28) [4]

У меня получалось так:
var
cmd:string;
...
cmd:="begin ";
for i:=0 to ...
cmd:=cmd+"insert into Table (field1,field2) values (value1[i],value2[i]);";

cmd:=cmd+" end";
Query1.Close;
Query1.SQL.Clear;
Query1.Add(cmd);
Query1.ExecSql;

Единственное, есть ограничение на размер получившейся команды. Я, для скорости, отправлял по 70 команд в запросе...




 
REL_   (2002-02-20 14:41) [5]

Где у тебя хранятся эти 600 записей (ну, или где ты их формируешь), которые ты все сразу хочешь слить в таблицу.

Если они формируются в другой таблице, то можешь попробовать запрос вида: Insert into Table(приёмник) ---- Select(источник).


 
alextov   (2002-02-20 14:59) [6]

Записи хранятся в другой таблице но вариант типа
insert into Table (field1,field2) (select field1,field2 from Table2 where ....")
не проходит так как данные необходимо слегка модифицировать перед
копированием.
А вот тов.Сухов подал хорошую идею
Ща попробуем


 
amamed_3071   (2002-02-20 15:19) [7]

Query1.Close;
Query1.SQL.Clear;


Query1.Add("insert into Table (field1,field2) values (value1,value2)");
Query1.Add("insert into Table (field1,field2) values (value3,value4)");
Query1.Add("insert into Table (field1,field2) values (value6,value6)");




Query1.ExecSql;



 
Awex   (2002-02-20 16:28) [8]

2amamed_3071

И так 600 записей ?


 
SergSuper   (2002-02-20 17:04) [9]

2 alextov
Глупо модифицировать данные, которые лежат на SQL сервере, через клиентскую часть. Наверняка это можно сделать одним запросом(уверен на 95%).



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
3-66803
EN
2002-02-23 01:42
2002.03.21
Администрирование БД IB


3-66788
[NIKEL]
2002-02-20 11:01
2002.03.21
Определение времени исполнения запросов


1-66935
fag2000@ok.ru
2002-03-06 15:36
2002.03.21
как получить значение отдельного бита?


6-66943
Igorok
2001-12-15 11:24
2002.03.21
Как при ошибке коннекта перехватить окно


1-66825
Tutov Roman
2002-03-07 10:37
2002.03.21
DBReech Edit и





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский