Импорт данных в таблицу SQL (оптимизация)

1. PRoman 28.07.08 16:55 Сейчас в теме
Как в таблицу SQL добавить сразу несколько записей?
(Прямым запросом)
Сейчас добавляю по 1 и это очень долго.
дошол слушок, что есть возможность добавлять записи "набором" (например по 100 шт).

Кто знает?
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. GennadiyN 16.06.20 17:26 Сейчас в теме
(1) Добрый день! Можете подсказать как решили вопрос? если еще помните) Столкнулся с такой же задачей, нужно отправить пачку записей
2. dlednev 29.07.08 07:31 Сейчас в теме
"прямым" - это как? INSERT(...) INTO XXX VALUES(...)?
есть синтаксис
INSERT(...) INTO XXX SELECT ...
и
BULK INSERT, но для "булка" надо сначала данные в текстовый файл записать и хелп внимательно прочитать....

а скажи мне плиз, как ты из 8-ки T-SQL вызываешь? - мне чета стало оЧЧЧень интересно!!!!!
3. homutke 48 30.07.08 11:45 Сейчас в теме
Для таких вещей нужно использовать ADO ниже пример, который упихивает Таблицу значений в sql таблицу , синхонизируясь по именм колонок.


Command = Новый COMОбъект("ADODB.Recordset");
Command.CursorLocation=3;
Connection.DefaultDatabase = "test";
Command.Open(NameTable,Connection,3,4,2);
СчетчикЛ = 1;
Вр = Таблица.Количество();
Состояние("Загр. "+NameTable+" " + Строка(Счетчик));
Для i=0 По Таблица.Количество() -1 Цикл
Command.AddNew();
Для j=0 По Таблица.Колонки.Количество() -1 Цикл
Value = Таблица[i][j];
Если не обЗначениеНеЗаполнено(Value) Тогда
//Сообщить(""+Таблица.Колонки[j].Имя+" ["+Value+"]");
Если (ТипЗнч(Value) = Тип("Число")) или (ТипЗнч(Value) = Тип("Дата")) тогда
Command.Fields(Таблица.Колонки[j].Имя).Value=Value;
Иначе
// Сообщить(Таблица.Колонки[j].Имя);
Попытка
Command.Fields(Таблица.Колонки[j].Имя).Value=Строка(Value);
Исключение
Сообщить(Таблица.Колонки[j].Имя+ " "+Строка(Value));
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если СчетчикЛ = 3000 Тогда
СчетчикЛ = 0;
Command.UpdateBatch();
Счетчик = Счетчик + 1;
Иначе
СчетчикЛ = СчетчикЛ + 1;
КонецЕсли;
КонецЦикла;
Попытка
Command.UpdateBatch();
Command.Close();
Исключение
Сообщить(NameTable);
КонецПопытки;
dima31337; GennadiyN; nomad_irk; +3 Ответить
6. dima31337 23.06.20 12:07 Сейчас в теме
а если взять сотрудника с видом образования, который на данный момент не выводится и поменять ему на какой-то другой вид образования, то о
(3)
Command.Fields(Таблица.Колонки[j].Имя).Value=Value

Вот же хороший Вы человек!!!!
4. dlednev 30.07.08 12:59 Сейчас в теме
а! понил что это за изврат! ;) так вот - в адодб есть другой объект, по-моему называется чтото вроде как "квери" (Query) Смысл в том, что можно в его реквизит "текст" вставить любой сиквел-запрос и его выполнить. это может быть и insert.
а можно в принципе сформировать тебе текстовый файл с данными таблицы по формату bulk insert и с помощью команды консоли isql загрузить его этим самым булком на сервер.
кароче, пытайся перейти на средства сиквела - чем ближе, тем лучше! АДО такие средства предоставляет, но я с ней лишь несколько лет назад из делфей работал, в визуальном режиме! :)
Вот еще мысль пришла: раз ты делаешь транспорт из файловой системы в сиквел, почему бы тебе внешнее приложение не использовать? те же делфи или васик? ;)
Оставьте свое сообщение
Вопросы с вознаграждением