Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Быстрое копирование данных через ADODB.recordset-ы / 9 сообщений из 9, страница 1 из 1
16.01.2005, 11:38:05
    #32866643
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Итак, есть две базы.
Доступ к базам через ADODB.
В каждой базе есть таблица T с идентичной структурой (одинаковые столбцы: имена и типы данных).
Уникальных индексов и ограничений нет.
---------------------
Внимание вопрос: как наиболее быстро скопировать данные T из одной базы в другую?
-------------------

Сейчас делаю так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
  ' Перенос данных
  Dim Src As ADODB.Recordset
  Dim Dst As ADODB.Recordset

 ' Открываем набор данных с источника
  Set Src = New ADODB.Recordset
  With Src
    .CursorType = adOpenForwardOnly
    .LockType = adLockReadOnly
    .Open "X", CurrentProject.BaseConnectionString, , , adCmdTable + adAsyncFetch
  End With

 ' Открываем набор данных с назначения
  Set Dst = New ADODB.Recordset
  With Dst
    .CursorType = adOpenForwardOnly
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Open "X", dbPIConnection, , , adCmdTable + adAsyncFetch
  End With
  
  ' Копируем данные
  Dim v As Variant
  While Not Src.EOF
    Dst.AddNew
    For Each v In Src.Fields
      Dst.Fields(v.Name) = v.Value
    Next
    Dst.Update
    Src.MoveNext
  Wend
      
  Src.Close
  Dst.Close
  Set Src = Nothing
  Set Dst = Nothing

Может кто умеет быстрее?
...
Рейтинг: 0 / 0
16.01.2005, 12:42:32
    #32866654
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Быстрее всего через запрос :),но можно и так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
......
  Set Dst = New ADODB.Recordset
  With Dst
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockBatchOptimistic
    .Open "select * from X where 1=0", dbPIConnection, , , adCmdText 
    set .ActiveConnection = Nothing
  End With

dim i as integer
dim cnt as integer
cnt=Src.Fields.Count- 1 
Do Untill  Src.EOF
    Dst.AddNew
    For i= 0  to cnt
      Dst.Fields(i).Value = Src.Fields(i).Value
    Next
    Dst.Update
    Src.MoveNext
Loop
Set  Dst.ActiveConnection =dbPIConnection
Dst.UpdateBatch
.........

...
Рейтинг: 0 / 0
16.01.2005, 13:29:55
    #32866673
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
выполнить запрос типа
Код: plaintext
INSERT INTO y  IN 'bla-bla.mdb' SELECT x.* FROM x;
на однм adodb коннекшне
...
Рейтинг: 0 / 0
16.01.2005, 13:34:13
    #32866676
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Alexey Shвыполнить запрос типа
Код: plaintext
INSERT INTO y  IN 'bla-bla.mdb' SELECT x.* FROM x;
на однм adodb коннекшне

Ежели бы это было подключение к одной базе или хотя бы серверу - я бы и не спрашивал.
Это разные сервера.
...
Рейтинг: 0 / 0
16.01.2005, 13:48:04
    #32866684
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Кто мешает
Код: plaintext
1.
INSERT INTO y  IN '\\OTHERDERVER\SHARE\bla-bla.mdb' SELECT x.* FROM x;
написать?
...
Рейтинг: 0 / 0
16.01.2005, 16:08:44
    #32866730
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Если файл MDB, то можно прилинковать таблицы с разных серверов и работать с ними как со встроенными.

Если файл ADP, то можно прилинковать один из серверов через Linked Server.
...
Рейтинг: 0 / 0
17.01.2005, 06:05:05
    #32866909
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Я ценю вашу участие, но вопрос был:

Быстрое копирование через ADODB.recordset.
--------------------
я знаком с другими технологиями - они не годятся в моем случае.
------------------------------

>>Кто мешает INSERT INTO y IN '\\OTHERDERVER\SHARE\bla-bla.mdb' SELECT x.* FROM x; написать?

\\client\C$\bla-bla.mdb недоступен серверу SQL. Это Citrix Client Network.
...
Рейтинг: 0 / 0
17.01.2005, 08:47:05
    #32866998
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
Ради расставления точек над Ё: вопрос был:

автор
Внимание вопрос: как наиболее быстро скопировать данные T из одной базы в другую?


Отсюда и попытки обществености прредложить максимально эффективное решение. Наверное, прогоняние в цикле через рекордсеты - не самый быстрый способ.
...
Рейтинг: 0 / 0
17.01.2005, 13:10:34
    #32867629
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрое копирование данных через ADODB.recordset-ы
2 aleks2 :
давайте уточним постановку задачи:
1) где запускается копирование
2) какие источники данных используются как source и destination
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Быстрое копирование данных через ADODB.recordset-ы / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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