powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Быстрое копирование данных через ADODB.recordset-ы
9 сообщений из 9, страница 1 из 1
Быстрое копирование данных через ADODB.recordset-ы
    #32866643
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, есть две базы.
Доступ к базам через 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
Быстрое копирование данных через ADODB.recordset-ы
    #32866654
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быстрее всего через запрос :),но можно и так

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

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

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

Быстрое копирование через 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
Быстрое копирование данных через ADODB.recordset-ы
    #32866998
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ради расставления точек над Ё: вопрос был:

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


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


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