![]() |
|
Модераторы: gambit |
![]()
|
|
| DriveIS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 10.2.2006 Репутация: нет Всего: нет |
Есть текстовый файл. Необходимо его построчно читать (строка файла соответствует строке таблицы) и, после считывания нескольких таких строк в какой-то буфер, послать запрос в БД на добавление этих нескольких считанных записей (БД - SQL Server). Есть ли такая возможность?
Если ставить вопрос более широко, то можно ли как-то оптимизировать чтение строк из файла и запись их в БД, возможно другими методами? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Можно при чтении файла наполнять датасет и сливать его в БД с пом. DataAdapter, метод Update.
-------------------- ![]() |
|||
|
||||
| DriveIS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 10.2.2006 Репутация: нет Всего: нет |
Такое уже испытывалось. И производительность такого метода оказалась еще ниже... Если я все правильно делал.
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: нет Всего: 36 |
Если база позволяет (Access, например, нет), можно посылать на выполнение не по одному INSERT, а сразу по несколько штук, если ещё на каждую отправку окрывается и закрывается соединение (что, в общем-то, правильно и соответствует идеологии ADO.Net), то производительность может возрасти в несколько раз.
Ещё можно почитать про BULK INSERT, например, здесь. Это сообщение отредактировал(а) mihryak - 5.8.2007, 16:51 |
|||
|
||||
| DriveIS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 10.2.2006 Репутация: нет Всего: нет |
Попробовал послать несколько запросов:
INSERT INTO T1 VALUES (1) INSERT INTO T1 VALUES (2) .... ..... Все прошло нормально, все вставилось, БД - SQL SERVER 2000. Но теперь другая проблема: когда я посылал запрос на добавление одной записи и если в таблице уже была запись с таким же ключом, то эта запись игнорировалась с помощью исключения. А теперь я посылаю блок записей и как мне проигнорировать только ОДНУ запись, а не ВЕСЬ БЛОК? Это, видимо, нужно решать средствами SQL... А как? |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: нет Всего: 36 |
хм.. сделать ключ автоинкрементным и вообще его не выставлять?
Добавлено через 3 минуты и 5 секунд вообще в корне неправильно предоставлять возможность изменения ключевого поля |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |