AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2006, 17:25   #1  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Выгрузку исправил
__________________
Axapta v.3.0 sp5 kr2
Старый 29.06.2006, 01:57   #2  
KSS is offline
KSS
Коллективное бессознательn ое
 
116 / 10 (1) +
Регистрация: 09.12.2002
Адрес: Москва
! Завтра забуду, поэтому предложу еще вариант
Сразу извиняюсь, что тестирование не по правилам - ночь на дворе, предлагаю просто в качестве идеи.

Выгрузку ниже делал дома, подключившись через интернет к терминальному серверу. Файл "111.xls" лежит у меня дома на диске "С", т.е. файл пишется через интернет.
Код ниже прошел за 59 секунд.
Тут использовались "самодельные" классы-оболочки АДО, но идея проста - берем АДОКомманд и пишем запрос "INSERT INTO".
Единственный момент - видимо, придется до начала процедуры задать имена столбцов обычным способом, а потом уже грузить данные.
CREATE COLUMN я не пербовал, но может и пройдет, зависит от драйвера, если пройдет, будет быстрее.

Код:
static void Job122(Args _args)
{
    ADOConnection connection;
    ADOCommand    command;
    int           i;

    int           timeFullStart, timeFullFinish, timeFullTotal;

    ;
    timeFullStart = timenow();

    connection = ADODB::establishConnection("C:\\111.xls", false);
    command    = new ADOCommand();
    command.ActiveConnection(connection);

    while(i<50000)
    {
        command.CommandText(strFmt("INSERT INTO [Лист1$] (Field1, Field2) VALUES (100000000000000000000, 20000000000000000)"));
        command.Execute();
        i++;
    }

    connection.Close();

    timeFullFinish = timenow();
    
    timeFullTotal = timeFullFinish - timeFullStart;
    
    info('Время выполнения, сек');
    info(int2str(timeFullTotal));
}
__________________
Жизнь такова, какова она есть и больше никакова.
Старый 29.06.2006, 10:02   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от KSS
Сразу извиняюсь, что тестирование не по правилам - ночь на дворе, предлагаю просто в качестве идеи…
идея проста - берем АДОКомманд и пишем запрос "INSERT INTO"….
Большое спасибо за приобщение к эксперименту и приятно встретить сторонника ADO – надеюсь, эта аудитория на Форуме будет расширяться.

Но зачОт пока поставить не могу.

В первую очередь, конечно, потому, что далековато от «Условий конкурса»: фактически у Вас в цикле 50 тыс. раз вставляется одна и та же запись, т.е. нет фетча по таблицам Аксы, а на фетч тратится довольно большой процент времени.

В вторую очередь - это даже не "очередь", а мое очень субъективное "ИМХО" - потому что Ваш вариант несколько тяжеловат – существует, опять же ИМХО, более элегантное решение, приведенное здесь (Господи, не дай возгордиться и захвалиться!). Там на стороне Axapta данные загружаются в ADODB.Recordset в оперативной памяти (без связи с БД, как в массив), а на стороне Excel вставляются – не устаю восхищаться! – одной единственной командой Range.CopyFromRecordset. Посмотрите, сравните. Это не может не понравиться. Хотя по скорости, конечно, несколько уступает быстрокрылым способам AndyD-а, но не на порядок (чуть позже я выложу свою «конкурсную» версию). Зато прозрачность реализации подкупает.

Однако, я совсем не отговариваю Вас от Вашего подхода. Оформите джобик «по правилам» и выкладывайте – будем его хронометрировать на моей «эталонной» машине и сохранять для благодарных потомков.
Старый 14.07.2006, 20:43   #4  
KSS is offline
KSS
Коллективное бессознательn ое
 
116 / 10 (1) +
Регистрация: 09.12.2002
Адрес: Москва
Цитата:
Сообщение от Wamr
Вот такой код отрабатывает за 35 сек на
Celeron-2,5/ 512Mb
Excel-2000
Win2000
На этом методе,кстати, построено дополнение, которое написал Денис Трунин года два с половиной назад, когда мы работали на техносиле.
Оно позволяло выгружать в экселевские файлы данные из стандартного диалога печати аксапты.
Колумбус, помнится, его продавал...
__________________
Жизнь такова, какова она есть и больше никакова.
Старый 22.09.2006, 16:45   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
[QUOTE=Wamr;110027]Вот такой код отрабатывает за 35 сек на
Celeron-2,5/ 512Mb
Excel-2000
Win2000
QUOTE]

Здесь, кстати, не мешало бы использовать функцию, как в одном из методов, предоставленных AndyD - для смены раскладки.
Старый 23.09.2006, 00:40   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
2 kashperuk: Иван, как приятно Ваш комментарий
Цитата:
Спасибо. Очень рад, что вы такой бескорыстный
к репутации AndyD'у за этот его пост контрастирует с
Цитата:
Сообщение от KSS Посмотреть сообщение
Колумбус, помнится, его продавал...
Спасибо! В общем, "Can't Buy Me Love", короче!
Старый 24.09.2006, 00:32   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Gustav Посмотреть сообщение
2 kashperuk: Иван, как приятно Ваш комментарий к репутации AndyD'у за этот его пост контрастирует с Спасибо! В общем, "Can't Buy Me Love", короче!

Побольше бы таких вот бескорыстных.
Работа бы была - просто в кайф. Она и щас ничего, конечно.
Теги
benchmark, download, excel, faq, xml, законченный пример, производительность, экспорт/импорт

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta программирует Excel на VBA Gustav DAX: База знаний и проекты 10 13.03.2006 11:42
Использование OWC.Spreadsheet для ускорения экспорта/импорта в/из Excel. storer DAX: Программирование 24 28.03.2005 19:10
Передача данных из 1С в Axapta 3.0 через COM Connector isbist DAX: Программирование 10 03.12.2004 10:58
Особенности экспорта данных в Excel Roman-sp DAX: Функционал 18 01.03.2004 12:07
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.