powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / VBScript - ,брыстрая перегрузка между двумя ODBC источниками
5 сообщений из 5, страница 1 из 1
VBScript - ,брыстрая перегрузка между двумя ODBC источниками
    #35651836
pretoreani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо написать VBS скрипт для сервера сценариев Windows
который будет быстро перегружать данные между двумя ODBC источниками.
Если конкретно - есть XLS файл с одной таблицей - данные один-к-одному нужно перегрузить в таблицу Oracle.
Я написал вариант что-то вроде построчного fetch из recordset-а и AddNew в другой recordset -
но работает это неприемлимо медленно и для каждой строки делает COMMIT в оракле.
Подскажите какие есть варианты для быстрой перегрузки данных целиком, одной пачкой,
или просто как ускорить мой вариант. Возможно есть быстрые варианты без ADODB, пусть даже с использованием third-party компонентов - тоже интересно.
...
Рейтинг: 0 / 0
VBScript - ,брыстрая перегрузка между двумя ODBC источниками
    #35653496
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оракловское соединение нужно открывать в режиме adUseClient, рекордсет с параметрами adOpenStatic, adLockBatchOptimistic, а по завершении его заполнения делать единственный UpdateBatch. Если в целевой таблице есть индексы, то можно попробовать добавлять во временную таблицу без индексов, а из нее в целевую insert'ом, возможно это будет быстрее.

Вообще хотелось бы посмотреть на существующий скрипт и строку соединения с ораклом в частности.
...
Рейтинг: 0 / 0
VBScript - ,брыстрая перегрузка между двумя ODBC источниками
    #35654127
pretoreani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyОракловское соединение нужно открывать в режиме adUseClient, рекордсет с параметрами adOpenStatic, adLockBatchOptimistic, а по завершении его заполнения делать единственный UpdateBatch. Если в целевой таблице есть индексы, то можно попробовать добавлять во временную таблицу без индексов, а из нее в целевую insert'ом, возможно это будет быстрее.

Вообще хотелось бы посмотреть на существующий скрипт и строку соединения с ораклом в частности.

Для теста я пока сделал просто генератор данных, без загрузки из Excel

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
data_consumer.open "DSN=DEVSTR;UID=DEV;PWD=***;"

msgbox "start upload" & now()

Set rs_consumer = CreateObject("ADODB.Recordset")

rs_consumer.CursorType =  3 
rs_consumer.LockType =  4 
rs_consumer.CursorLocation =  3 
rs_consumer.CacheSize =  300 


rs_consumer.Open "SELECT * FROM IK_VBS_TEST", data_consumer

For iCounter =  1  to  50000  Step  2 
	rs_consumer.AddNew
        rs_consumer.Fields("x") = iCounter
	rs_consumer.Fields("y") = iCounter* 2 
Next
rs_consumer.UpdateBatch  3 
rs_consumer.Close

Както медленно всетаки...
...
Рейтинг: 0 / 0
VBScript - ,брыстрая перегрузка между двумя ODBC источниками
    #35654136
pretoreani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Driver для DSN-а - Oracle in OraDb10_10g_home1
...
Рейтинг: 0 / 0
VBScript - ,брыстрая перегрузка между двумя ODBC источниками
    #35654258
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheSize лучше убрать, а что за UpdateBatch 3 не понятно. Такой константы в AffectEnum нет. Да и не нужен там параметр — все записи новые. В остальном вроде все в порядке. Но для надежности лучше написать так:
Код: plaintext
1.
2.
data_consumer.CursorLocation= 3 
data_consumer.open "DSN=DEVSTR;UID=DEV;PWD=***;"
rs_consumer.Open "SELECT * FROM IK_VBS_TEST", data_consumer,  3 ,  4 

Еще можно попробовать взять DTS от MSSQL 2000, он переливает данные заметно шустрее, чем подобные скрипты.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / VBScript - ,брыстрая перегрузка между двумя ODBC источниками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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