Страницы: 1
RSS
Как правильно скопировать из Access в Excel
 
Добрый день. Вопрос на форуме не поднимался, насколько я понял из поиска.  
 
У меня есть файл *.txt, который весит 1,6Гб. Было бы всё замечательно, если бы строк было меньше 1048576, но файл содержит в себе порядка 2млн строк (записей), поэтому приходится открывать этот файл в Access.  
Информация в Access я сортирую и выбираю нужный мне период (определенный месяц), после чего копирую полученные данные в Excel.  
 
Проблема: в файле Excel получается порядка 180000 строчек и всё жутко тормозит - работать невозможно. Удаление, подсчет формул и даже открытие файла происходит минут по 10-15.  
 
з.ы. Для проверки посмотрел другой файл в экселе, где порядка 600000 строк: всё работает вполне приемлимо (файл не был экспортирован с Access). Про 10-15 минут задержки я вообще молчу...  
 
Может быть кто-нибудь посоветует, как быть в такой ситуации? Спасибо.
 
А как Вы копируете?  
Сделать экспорт запроса в файл Экселя не пробовали?
 
И может быть можно сразу скриптом/макросом отобрать нужные строки непосредственно из текста?  
Я правда с такими огромными файлами дела не имел, мегабайт на 30 максимум файлы были.
 
Я не силен в Access - копировал руками. Так там ещё и ограничение на 65000 копируемых строк стоит. Приходится несколько раз копировать.  
 
Пробовал так же через "Экспортировать в Excel" - тот же результат.
 
Там когда на экране результат выполненного запроса - в меню есть экспорт. В экспорте выбираете файл Экселя.  
Или Вы не запросом отбирали, а просто всю базу сортировали и выбирали руками строки из середины?
 
Т.е. не файл выбираете, а какой файл будет создан выбираете, тип файла :) А то совсем запутаю...
 
Прикрепил файл с криншотами: так нагляднее будет, но насколько я Вас понял, вы мне говорите про тот же самый экспорт в эксель, который я пробовал уже.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
krepost, я понимаю, что вопрос для Вас очень важный. Но не менее важно соблюдать Правила Форума, на котором Вы просите помощи.
 
файл великоват для форума 500 кб  
 
обращайтесь реквизиты в подписи, насчет быстродействия формул ни чего не скажу, но выгрузку и обработку данных макросом организую без проблем
Спасибо
 
Извиняюсь.  
 
Залил файл на обменник (в правилах не запрещено):  
 
http://www.sendspace.com/file/t5uc59
 
Что-то 2007 Access выглядит совсем не так, как 2000 :)  
Раз с Ацессом не получается -    
я бы вероятно просто тупо скриптом vbs переложил нужные строки из одного текста в другой - тупо читаем построчно, анализируем в строке место с датой, дописываем строку в другой файл, можно в процессе ещё почистить от ненужного или поанализировать.  
Примеры кода тут были, или несложно найти в сети (у меня под рукой короткого понятного не нашлось...)  
Думаю минут за 5 выборка была бы готова.  
Потом это текст можно открыть Экселем.  
Или, если усложнять код, можно сразу набирать данные в массив, который потом одним движением вывалить на лист Экселя.
 
{quote}{login=}{date=02.06.2011 06:58}{thema=}{post}Залил файл на обменник (в правилах не запрещено){/post}{/quote}Там выложен какой-то EXE файл, пытающийся установить какой-то загрузчик. Выложите где-нибудь архив без необходимости запуска неизвестных и непроверенных программ.
 
{quote}{login=ZVI}{date=03.06.2011 02:00}{thema=}{post}Там выложен какой-то EXE файл, пытающийся установить какой-то загрузчик. Выложите где-нибудь архив без необходимости запуска неизвестных и непроверенных программ.{/post}{/quote}Отбой тревоги, сам файл оказался ниже: 1.zip  
Но там нет кода, а только картинки с описанием проблемы для стандартного способа, который не сработает.  
По импорту из большого текстового файла посмотрите вариант решения здесь:  
http://www.erlandsendata.no/english/index.php?t=envbadac
 
Всем спасибо)    
 
так и не разобрался в проблеме, но теперь уже не важно. Файл перевыгрузили кусками размером по 100мб. Эксель их берет)
 
И теперь, чтоб собрать все нужные данные, надо 10 раз загружать файл в Эксель, 10 раз отбирать нужное (а то что-то недоберёшь), потом (или в процессе) это нужное из 10-ти кусков собирать в одно целое?  
Нет уж, лучше 1 раз запустить код на 5 минут - пусть машина работает...
 
Упс, не 10... 16 раз!
 
<<Информация в Access я сортирую и выбираю нужный мне период (определенный месяц). Может быть кто-нибудь посоветует, как быть в такой ситуации? >>  
 
Подумайте, помимо периода, можно ещё ввести какой-либо аргумент (СУММЕСЛИ к примеру, >0, <>"" и пр.), чтобы свести данные почти к готовой таблице. Access - это шикарный инструмент для БД. И если бы не желание делать тренировку "серому веществу", я бы в нём и работал до сих пор.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Нет возможности на примерах разбираться, но накую же задачу решал через установку связи с текстовым файлом через спецификацию в ACCESS, затем экспотрировал его  в базу через запрос, затем к таблице в базе данных строил запрос для получения требуемых данных для экспорта и далее экспортировал в EXCEL. Когда все было отработано создавал в ACCESS макрос в первым делом - импорт текста указываешь спецификацию и целевую таблицу. Затем экспорт данных - имя запроса, тип выгрузки (Excel) ,файл в который все выгружается.Все делалось за секунду.  
Потом когда текстовых файлов развелось до 10  написал функцию которая программно устанавливает связь с текстовым файлом, загружает подлинкованные данные в таблицу ( тут если есть возможность сильно ограничить данные лучше через соответствующий  SELECT и RUNSQL а иначе IMPORT TEXT). Далее функцию в которой через FILESEARCH из отдельной директории производил манипуляции с каждым файлом. Ну а экспорт остался тот же. Все делалось через запуск макроса
Страницы: 1
Читают тему
Наверх