Задать вопрос
xztau
@xztau
Я

Что значит пакетная вставка данных?

Здравствуйте!

У меня в БД (SQL server) за раз нужно вставлять много данных. Я использую:
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (1 ,@d ,Item(ELIMS.ELIMSQUE.tVAL1))
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (2 ,@d ,Item(ELIMS.ELIMSQUE.tVAL2))	 
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (3 ,@d ,Item(ELIMS.ELIMSQUE.tVAL3))
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (4 ,@d ,Item(ELIMS.ELIMSQUE.tVAL4))
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (5 ,@d ,Item(ELIMS.ELIMSQUE.tVAL5))
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (6 ,@d ,Item(ELIMS.ELIMSQUE.tVAL6))	 
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (7 ,@d ,Item(ELIMS.ELIMSQUE.tVAL7))	 
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (8 ,@d ,Item(ELIMS.ELIMSQUE.tVAL8))	 
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
     VALUES (9 ,@d ,Item(ELIMS.ELIMSQUE.tVAL9))


Прочитал тут
habrahabr.ru/post/208264
что в этом есть проблема. Правильно ли я делаю? Как можно организовать вставку большого набора данных?
  • Вопрос задан
  • 5080 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
BuriK666
@BuriK666
Компьютерный псих
как-то так
INSERT INTO [dbo].[Main] ([ID_CHANNEL] ,[ID_RECDATE] ,[MESVALUE])
 VALUES (1 ,@d ,Item(ELIMS.ELIMSQUE.tVAL1)), (2 ,@d ,Item(ELIMS.ELIMSQUE.tVAL2))
Ответ написан
svd71
@svd71
Основное время обработки DML - это работа с транзакцией: старт, создания версии записей, соммит/роллбэк.
Пакетная обработка - это значит обработка пакетом нескольких команд.
Чаще всего основана на том, что для такой группы команд( допустим на 500 инсертов) используется одна транзакция.
В некоторых СУБД (обычно блокировочник) )такой способ может достигаться и через использование execute statement - когда группа команд исполняется как одна операция.
В других - это возможное отключение логгирования операций (bulk loading), что может послужить невозможностью откатить изменения.

ПС: SQL Server - это общее понятие. Лучше указывать какой именно: MySQL SQL Server, MS SQL, Firebird, Sybase ASA/ASE, ....и т.д. Все они SQL Servera.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы