Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как содержимое массива максимально быстро переложить на сервер? / 5 сообщений из 5, страница 1 из 1
21.03.2005, 15:33:47
    #32971561
ы
ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как содержимое массива максимально быстро переложить на сервер?
ADO 2.8, MSDE 2000
Имею варианты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
' 1)
for t= 1  to  12345 
  cnn.execute "insert into myTable values (1,2,3)" ' Условно, тут дергаются цифры из массива
  ' Тут мне требуется id добавленной записи
  myId=cnn.openrecordset("select @@identity")( 0 )
next

' 2)
for t= 1  to  12345 
  rst.addnew
  rst( 0 )= 1 
  rst( 1 )= 2 
  rst( 2 )= 3 
  rst.update 
  ' id добавленной записи
  myId=rst("id")
next

По мне, так оба способа довольно тормозны. Никто не знает, как лучше сделать?
...
Рейтинг: 0 / 0
21.03.2005, 16:18:16
    #32971737
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как содержимое массива максимально быстро переложить на сервер?
Есть еще bulk insert.

Но для него нужны админовские права...

А что за задача, может условия подправить?

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

У меня была такая ситуация - перенес расчет (очень хитровжаренный) на sp.
Сколько бы я ни написал там курсоров и циклов, все равно быстрее, чем вставка 20 000 строк с клиента :-)...
...
Рейтинг: 0 / 0
21.03.2005, 17:32:04
    #32972000
ы
ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как содержимое массива максимально быстро переложить на сервер?
ДуракЕсть еще bulk insert.
Cпасибо, поищу, что это за зверь...

А задумываться не над чем. Время от времени на клиенте появляется несколько тысяч записей, которые надо переселить на сервер. Никаких расчетов, ничего.
...
Рейтинг: 0 / 0
22.03.2005, 10:07:19
    #32972824
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как содержимое массива максимально быстро переложить на сервер?
Выполнение Insert'а гораздо тормознее UpdateBatch. Попробуй это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.CursorLocation = adUseClient
rs.Open "select * from MyTable Where 1=2", cn, adOpenStatic, adLockBatchOptimistic
For t =  1  To  12345 
    rs.AddNew
Next
rs.UpdateBatch
'в rs(0) возвращаются id добавленных записей 

В моем случае всавка данных организаций (название, адрес, несколько телефонов и контактных лиц) порядка 5000 штук происходила в течении 3-4 минут на не самый быстрый сервер (Celeron III 700, 512 ram)
...
Рейтинг: 0 / 0
23.03.2005, 23:12:45
    #32977369
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как содержимое массива максимально быстро переложить на сервер?
А где хранится ваш массив? В тексте, в электронной таблице, в таблице Access?. Может быть все можно сделать проще - подключить каким-либо способом этот источник данных и:

Код: plaintext
1.
INSERT INTO myTable (fld1, fld2, fld3)
    SELECT fld1,fld2,fld3 FROM tblSource
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как содержимое массива максимально быстро переложить на сервер? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]