| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Вставка нескольких записей в таблицу БД |
| Автор: DriveIS 5.8.2007, 07:02 |
| Есть текстовый файл. Необходимо его построчно читать (строка файла соответствует строке таблицы) и, после считывания нескольких таких строк в какой-то буфер, послать запрос в БД на добавление этих нескольких считанных записей (БД - SQL Server). Есть ли такая возможность? Если ставить вопрос более широко, то можно ли как-то оптимизировать чтение строк из файла и запись их в БД, возможно другими методами? |
| Автор: mr.DUDA 5.8.2007, 10:46 |
| Можно при чтении файла наполнять датасет и сливать его в БД с пом. DataAdapter, метод Update. |
| Автор: DriveIS 5.8.2007, 14:00 |
| Такое уже испытывалось. И производительность такого метода оказалась еще ниже... Если я все правильно делал. |
| Автор: mihryak 5.8.2007, 16:49 |
| Если база позволяет (Access, например, нет), можно посылать на выполнение не по одному INSERT, а сразу по несколько штук, если ещё на каждую отправку окрывается и закрывается соединение (что, в общем-то, правильно и соответствует идеологии ADO.Net), то производительность может возрасти в несколько раз. Ещё можно почитать про BULK INSERT, например, http://msdn2.microsoft.com/en-us/library/ms188365.aspx. |
| Автор: DriveIS 5.8.2007, 17:32 |
| Попробовал послать несколько запросов: INSERT INTO T1 VALUES (1) INSERT INTO T1 VALUES (2) .... ..... Все прошло нормально, все вставилось, БД - SQL SERVER 2000. Но теперь другая проблема: когда я посылал запрос на добавление одной записи и если в таблице уже была запись с таким же ключом, то эта запись игнорировалась с помощью исключения. А теперь я посылаю блок записей и как мне проигнорировать только ОДНУ запись, а не ВЕСЬ БЛОК? Это, видимо, нужно решать средствами SQL... А как? |
| Автор: mihryak 5.8.2007, 17:36 |
| хм.. сделать ключ автоинкрементным и вообще его не выставлять? Добавлено через 3 минуты и 5 секунд вообще в корне неправильно предоставлять возможность изменения ключевого поля |