Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / INSERT INTO и два соединения / 11 сообщений из 11, страница 1 из 1
24.12.2007, 14:49
    #35030135
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Добрый день всем !
Подскажите пожалуйста, есть ли быстрый способ заливки данных из одной таблицы в другую , вроде этого:

cn.Execute "INSERT INTO Table1 (Item1,Item2,Item3,Item4) " & _
" SELECT Item1,Item2,Item3,Item4 FROM Table2 "

но используя два соединения. Так как выборка данных второй таблицы идет с удаленного сервера. Обе таблицы с одинаковой структурой. Или всетаки придется открывать recordset со вторым соединением и в цикле добавлять его в первую ?
Спасибо.
...
Рейтинг: 0 / 0
24.12.2007, 15:39
    #35030331
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
См. в сторону Bulk insert
...
Рейтинг: 0 / 0
24.12.2007, 16:52
    #35030563
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Спасибо за ответ. Но по поводу BULK INSERT нашел только вставку данных из файла. Я использую MySql . Если можно, напишите пример вставки данных из одной базы в другую.
Спасибо.
...
Рейтинг: 0 / 0
24.12.2007, 21:39
    #35031088
DEP1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
А чем вас это
Код: plaintext
1.
Или всетаки придется открывать recordset со вторым соединением и в цикле добавлять его в первую ?
не устраивает?
...
Рейтинг: 0 / 0
24.12.2007, 22:05
    #35031109
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Скоростью не устраивает. Соединение через интернет. Нужно время на соединение, потом на выборку данных. А уж потом цикл, который тоже требует время, если большое колличество строк. Это в случае , если записываю с сервера в локальную базу.
...
Рейтинг: 0 / 0
24.12.2007, 22:24
    #35031130
DEP1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Может что вроде этого поможет:

Save a Recordset:

Код: plaintext
1.
2.
Dim rs as New ADODB.Recordset
rs.Save "c:\yourFile.adtg", adPersistADTG


Open a persisted file with Recordset.Open:


Код: plaintext
1.
2.
Dim rs as New ADODB.Recordset
rs.Open "c:\yourFile.adtg", "Provider=MSPersist",,,adCmdFile
...
Рейтинг: 0 / 0
25.12.2007, 10:21
    #35031573
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Спасибо за ответ. Попробую сделать , операясь на Ваш совет. Протестирую и выберу оптимальный вариант.
...
Рейтинг: 0 / 0
25.12.2007, 10:51
    #35031653
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Код: 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.
Function CopyData(sql As String, cnFrom As ADODB.Connection, cnTo As ADODB.Connection) As Boolean
Dim rs As New ADODB.Recordset
Dim st As New ADODB.Stream
Dim s As String
    On Error GoTo errh:
    rs.Open sql, cnFrom, adOpenStatic, adLockBatchOptimistic
    st.Type = adTypeText
    st.Open
    rs.Save st, adPersistXML
    rs.Close
    s = st.ReadText
    st.Close
    s = Replace(s, _
        "rs:basecatalog='" & cnFrom.Properties("Current Catalog").Value & "'", _
        "rs:basecatalog='" & cnTo.Properties("Current Catalog").Value & "'")
    s = Replace(s, "<rs:data>", "<rs:data><rs:insert>")
    s = Replace(s, "</rs:data>", "</rs:insert></rs:data>")
    st.Open
    st.WriteText s
    st.Position =  0 
    rs.Open st
    Set rs.ActiveConnection = cnTo
    rs.UpdateBatch
    rs.Close
    CopyData = True
errh:
End Function
...
Рейтинг: 0 / 0
25.12.2007, 10:54
    #35031664
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Проверялось на двух MSSQL серверах, возможно для других источников у свойства "Current Catalog" будет другое название.
...
Рейтинг: 0 / 0
25.12.2007, 11:41
    #35031820
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Спасибо Antonariy за готовую функцию. Сейчас пробую реализовать задачу с командой MySql LOAD DATA. Кажется она быстрее будет. Но все равно надо протестировать разные варианты. Спасибо.
...
Рейтинг: 0 / 0
25.12.2007, 14:38
    #35032634
sergeych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT INTO и два соединения
Вдруг кому тоже пригодится.На форуме MySql посоветовали использование FEDERATED таблиц. Хорошая штука, только в ней проблемы с агрегатными функциями. http://www.oreillynet.com/pub/a/databases/2006/08/10/mysql-federated-tables.html?page=3
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / INSERT INTO и два соединения / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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