powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA & Lotus Notes
12 сообщений из 12, страница 1 из 1
ASA & Lotus Notes
    #34175513
2006!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adaptive Server Anywhere Database Engine Version 9.0.2
Lotus Domino 5
Lotus NotesSQL driver 3.02g


В БД ASA нужно делать импорт данных с БД Lotus.
Я создал ODBC Datasource используя NotesSQL драйвер.
В ASA создал Remote Server – Lotus.

Импорт данных делается с помощью stored procedure

Все работает – но только одна проблема – ОЧЕНЬ МЕДЛЕННО!!!

Например: 150 записей читает за 80 сек. !!! :(
Так как в таблицах Lotus Notes тысячи записей - импорт занимает достаточно много времени...

Вопрос: Как можно ускорить работу процедур импорта?
Может кто работал с ASA и Lotus Notes и может что-то подсказать?

Вот пример процедуры импорта -
Код: 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.
ALTER PROCEDURE "DBA"."sp_test"()
begin
  declare com_s char( 256 );

  declare v_begin_date date;
  declare v_end_date date;
  declare v_count_all integer;
  declare err_notfound exception for sqlstate value '02000';
  declare v_id integer;
  set v_begin_date='2006-11-01';
  set v_end_date='2006-12-01';
  set v_count_all= 0 ;
  set com_s='Forward to Lotus ''select column1,column2,column3 from Table1 where ( column3 between '+''''''+DATEFORMAT(v_begin_date,'yyyy-mm-dd')+''''''+' and '+''''''+DATEFORMAT(v_end_date,'yyyy-mm-dd')+''''''+' )''';
  begin
    declare v_column1 varchar( 254 );
    declare v_column2 integer;
    declare v_column3 date;
    begin
      declare import_cursor dynamic scroll cursor using com_s;
      open import_cursor;
      lp1: loop
        fetch next import_cursor into v_column1,v_column2,v_column3;
        if sqlstate = err_notfound then leave lp1
        end if;
	  /*  */
        set v_count_all=v_count_all+ 1 
      end loop lp1;
      close import_cursor
    end;
    message string(v_count_all) to console;
  end
end
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34175546
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что если не открывать курсор, а делать insert into select from
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34175872
2006!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitryа что если не открывать курсор, а делать insert into select from
В таком случае надо использовать Proxy Tables ...
Да наверно это б ускорило работу...
Но при использовании Proxy Table здесь возникает следующая ошибка:
например прокси таблица table_proxy имеет 10000 записей, но если сделать селект из нее
то он будет бесконечен!!! :(
Код: plaintext
1.
2.
3.
select * from table_proxy;
OUTPUT TO C:\\Temp\\t.txt
FORMAT ASCII;
Этот запрос будет выполнятся бесконечно! Я его прервал когда в файл было экспортировано 15000 записей...
а если посмотреть в файл C:\\Temp\\t.txt - то в нём будет этих 10000 записей и последняя запись повторяется еще 5000 раз ...

Как решить эту проблему ?
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34175923
Yuriy Bazar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2006!!! Dmitryа что если не открывать курсор, а делать insert into select from
В таком случае надо использовать Proxy Tables ...
Да наверно это б ускорило работу...
Но при использовании Proxy Table здесь возникает следующая ошибка:
например прокси таблица table_proxy имеет 10000 записей, но если сделать селект из нее
то он будет бесконечен!!! :(
Код: plaintext
1.
2.
3.
select * from table_proxy;
OUTPUT TO C:\\Temp\\t.txt
FORMAT ASCII;
Этот запрос будет выполнятся бесконечно! Я его прервал когда в файл было экспортировано 15000 записей...
а если посмотреть в файл C:\\Temp\\t.txt - то в нём будет этих 10000 записей и последняя запись повторяется еще 5000 раз ...

Как решить эту проблему ?
какой результат если в запрос select * from table_proxy; добавить условие неважно какое (select * from table_proxy where column1...)
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34175971
2006!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yuriy Bazar какой результат если в запрос select * from table_proxy; добавить условие неважно какое (select * from table_proxy where column1...)
Результат не изменился...
Даже запрос: select count(*) from table_proxy
возращает не одно число =10000(количество записей)
а последовательность по 10000, ну тоесть:
10000
10000
10000
....
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176008
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2006!!! wrote:

> Даже запрос: select count(*) from table_proxy
> возращает не одно число =10000(количество записей)
> а последовательность по 10000

Может, это драйвер такой "замечательный"? Другой версии нет?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176319
old_joy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался с этим. Драйвер ODBC для Lotus очень глючный. Работать очень тяжело. Потому взял Access, подключился из VB к Lotus через domobj.tlb - ставится вместе с клиентом Lotus. Работает достаточно быстро.
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176333
old_joy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример скачивания адресной книги.
авторPrivate Sub Кнопка5_Click()
On Error GoTo Err_Кнопка5_Click

Dim session As New NotesSession
Dim Database As NotesDatabase
Dim View As NotesView
Dim doc As NotesDocument
Dim itemFirst As NotesItem
Dim itemLast As NotesItem
Dim itemFull As NotesItem
Dim itemAddr As NotesItem
Dim db As Database

Call session.Initialize(Me.Pass)
Set db = CurrentDb
Set qdf = db.CreateQueryDef("")

'Адрессные книги на серверах
Set Database = session.GetDatabase("SRV", "names-head.nsf")
Set View = Database.GetView("People")
Set doc = View.GetFirstDocument

Do While Not (doc Is Nothing)

Set itemFirst = doc.GetFirstItem("FirstName")
Set itemLast = doc.GetFirstItem("LastName")
Set itemFull = doc.GetFirstItem("FullName")
Set itemAddr = doc.GetFirstItem("InternetAddress")

qdf.SQL = "insert into tmp (first, last, full, addr) values(""" & _
itemFirst.Text & """ ,""" & itemLast.Text & """,""" & _
itemFull.Text & """,""" & itemAddr.Text & """)"
qdf.Execute

Set doc = View.GetNextDocument(doc)

Loop

Set session = Nothing
db.Close

Exit_Кнопка5_Click:
Exit Sub

Err_Кнопка5_Click:
MsgBox Err.Description
Set session = Nothing
Resume Exit_Кнопка5_Click

End Sub

Из Access перегонять данные в ASA достаточно просто.
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176621
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
old_joy wrote:

> Из Access перегонять данные в ASA достаточно просто.

А почему бы не класть данные сразу в ASA?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176656
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы в лотусовой базе написал агента, который бы выгружал данные куда надо..
Домино - не SQL сервер, и выполнять ваши селекты нормально и не должен.
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34176692
2006!!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000Может, это драйвер такой "замечательный"? Другой версии нет?
К сожалению нет... это самая новая версия NotesSQL драйвера...

Если не использовать proxy tables, то запрос такого вида
Код: plaintext
Forward to Lotus 'select count(*) from Table1'
выполняется отлично!

Да и если пользоватся SQL Explorer (из Delphi), то запросы к таблицам Lotus Notes также выполняются хорошо.
Код: plaintext
select count(*) from Table1
...
Рейтинг: 0 / 0
ASA & Lotus Notes
    #34177163
old_joy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
А почему бы не класть данные сразу в ASA?

Указанная в примере таблица tmp может быть внешней для Access таблицей из ASA. Работает без проблем. В конце концов, какая разница, где выполняется запрос (процедура)? Важен результат. Быстро и качественно.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA & Lotus Notes
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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