Страницы: 1
RSS
Импорт over9000 данных из Excel в определенные таблицы Access
 
День добрый!
Есть куча Excel файлов по месяцам(т.е. в год 12 файлов), в каждом файле около 15 листов, но нам пока нужны только 3, на каждом из листов порядка 30 строк и over9000 столбцов. (См.пример во вложении).
В одном файле идёт расчет расходов за 1 месяц по каждому продукту из всех разделов.

Необходимо реализовать програмку для переноса итоговых расчетов всей продукции в определенные таблицы Access.
В Access скорее всего будут такие таблицы как Продукция, Разделы продукции, Итоги расходов, а сами итоги должны быть еще как-то разбиты по годам и месяцам, чтобы не городить всё в одну таблицу наверное...

Всё это хотят сделать для того, чтобы можно было выводить кучу разных отчетов по итоговым расходам, поскольку сейчас это фактически нереально. К примеру отчет типа: покажите нам сравнение итогов расхода 3 и 7 в 2015 и 2017 году по Продукции 2 и 5.

Изменить Excel файлы скорее всего не дадут, максимум можно будет вручную в Excel файл занести какие-то метки, если это вообще нужно... Полностью избавиться от Excel и просто начать заводиться данные сразу в Access тоже не получится.

Возможно ли это реализовать? Нужно ли вообще это делать, поскольку как я понимаю тут чёрт ногу сломит.
Если возможно, то как лучше это сделать? Поскольку вроде начинаю понемногу делать и каждый раз упираюсь в какую-то проблему, очень много нюансов в итоге....
 
И в чем проблема засунуть всё в Access и подсосать сводные к базе?
 
Каким образом? Вручную?

К примеру, как указать Access, что мол берёшь файл Январь 2018 из листа 2 берёшь данные с 4 по 20 строки и по каждому продукту из данного же столбца и столбца + 1 берёшь данные, если продукта нет в базе - добавь, если у данное продукта пустые итоги, то не добавляй. Еще создай пометку, что эти данные относятся к 2018 году 1 месяца.  
Изменено: BladzheR - 20.03.2018 15:48:40
 
Доброе время суток.
При такой структуре данных - писать макрос, который будет формировать требуемую плоскую таблицу, данные которой можно уже будет добавить в таблицу Access. Можете с Power Query рассмотреть вариант для выполнения требуемых трансформаций.
 
Андрей VG, Как вариант! Спасибо, сейчас попробую!

Но тогда вот какая проблема, переизбыток данных в базе. Т.е. таким методом мы только перенесём все данные. Т.е. у нас будет в год 12 таблиц. В каждой таблице содержится одна и та же информация - это имена расход 1, 2,3,... и названия продукта. Возможно ли избежать переизбытка? Чтобы к примеру была одна таблица с продукцией и одна таблица с расходами.
 
Зачем вам 12 таблиц? Это может быть одна плоская таблица из которой с помощью сводной таблицы вы вытащите и сгруппируете данные в разрезе месяцев, продуктов... Как вам будет надо. Только в Екселе на листе не может быть более 1 миллиона строк.
Если автоматизировать бардак, то получится автоматизированный бардак.
 
30*9000 = 270 000 строк с каждого листа, что дает порядка 3,2 млн строк за год. Если у вас данные с 15 года то получаем около 10 млн строк. Ограничение размера файла в Access 2 Гб. Когда я пытался загрузить в Акцесс 5 столбцов по 8 млн строк - то у меня не поместилась табличка в файл. Вы уверены что изначально корректно выбрали платформу для вашей БД?
Можно конечно не грузить в акцесс, а сделать огромный файл CSV и создать связанную с ним таблицу. Но по-моему это все таки извращение в основе своей.
Если вам не нужна БД пополняемая данными в реальном времени, а только время от времени пополняемая, то самый оптимальный вариант через Power Query преобразовать и консолидировать данные, после чего засунуть получившийся массив в модель данных и через Power Pivot крутить сводные.
Изменено: PooHkrd - 20.03.2018 16:52:10
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
30*9000 = 270 000 строк с каждого листа
Коллега, а вы не погорячились? По вводной
Цитата
BladzheR написал:
а каждом из листов порядка 30 строк и over9000 столбцов.
По моему мнению, это 270 000 ячеек, что согласитесь может и не быть так страшно.
Хуже другое, BladzheR, по видимому, ничего не понимает про базы данных. Ему бы сначала книги какие-нибудь почитать. Иначе это будет долгое обсуждение, особенно учитывая, что построение базы данных всегда конкретно, тут не дашь чего-то обобщающего - легко сферического коня в вакууме получить.
Цитата
BladzheR написал:
В каждой таблице содержится одна и та же информация - это имена расход 1, 2,3,... и названия продукта. Возможно ли избежать переизбытка? Чтобы к примеру была одна таблица с продукцией и одна таблица с расходами.
Для того чтобы ответить на этот вопрос нужна более вменяемая структура данных, плюс, описание бизнес-процесса в которых эти данные формируются, плюс описание того, как предполагается их использовать. Боюсь это выходит за рамки форумного обсуждения, особенно  в силу неясности того, насколько это касается Excel. Слишком общий вопрос у вас.
 
wowick, 12 таблиц в Access... Выгрузка в Access должна происходить каждый месяц...
 
BladzheR, засуньте всё в одну таблицу с дополнительным столбцом с датой этих данных типа 01.01.2018, 01.02.2018, 01.03.2018
 
Цитата
kavaka написал:
Коллега, а вы не погорячились? По вводной
Да не суть по количеству строк, размеры то массивов сопоставимы, у меня это было 40 млн ячеек, у него примерно столько же. В таблицу Акцесса если и влезет, то хватит не на долго - очень скоро упрется в ограничение. А значит либо менять платформу, либо костыли (ну не люблю я костыли :D  ). Решение нужно изначально продумывать хорошо масштабируемое. Иначе потртишь вагон времени и сил, а потом все по-новой. Наелся я такой ерунды уже.
Вот горшок пустой, он предмет простой...
 
Андрей VG, Я не понимаю как из Excel перенести данные в Access.
Первое, что мне пришло в голову это написать на Basic программу в Excel, которая будет брать данные по каждому продукту и расходу и выполнять SQL запросы на поиск и добавление данных в заранее созданную структуру DB. Потом эта база открывается в Access и там уже строятся необходимые отчеты...
С Access работал пару раз лет 6 назад и то немного, поскольку это мне неинтересно, как и Excel и Windows.

По DB работаю с MySQL в основном из Python, под Linux на OrangePi, там всё элементарно.
 
Цитата
BladzheR написал:
По DB работаю с MySQL в основном из Python
Тогда вообще не вижу проблем. Python прекрасно читает файлы Excel. Вот и перегоняете сразу в MySql.
Да и в Accss не сложно. Макросом формитуете плоскую таблицу с такими же типами данных и названием столбцов на отдельном листе. Потом импортируете из Access в подготовленную таблицу
 
Цитата
BladzheR написал:
По DB работаю с MySQL в основном из Python, под Linux на OrangePi, там всё элементарно
И в чем проблема использовать pandas или openpyxl, чтобы форматнуть таблицы под бд?
 
Андрей VG, Да, это идеально! А я что-то зациклился на одном и том же. Можно сразу и в .accdb перегнать.Потом и Qt можно подключить, чтобы юзеры сами всё запускали...
Изменено: BladzheR - 20.03.2018 17:59:15
 
Цитата
BladzheR написал:
поскольку это мне неинтересно, как и Excel и Windows.
А вот за сие я б  бан на денек повесил :-)  Такое ляпнуть на форуме по Excel :-)
По вопросам из тем форума, личку не читаю.
 
БМВ, Ой... Да ладно :)
Ничто и Никого не оскорбил! Высказал личное мнение, с ним вы соответственно можете не согласиться)
P.S.
Даже, если будет бан, то каким образом он сдерживает?
Просто создать новый аккаунт, ну а если там есть какая-то привязка по ip, то просто поднимаем VPN - профит!
 
Offtop
Цитата
BladzheR написал:
Даже, если будет бан, то каким образом он сдерживает?
Проверять будете? :-)
По вопросам из тем форума, личку не читаю.
 
BladzheR, ну на самом деле: это не очень красиво - сообщать о Ваших антипатиях к Excel на форуме, где собрались его фанаты.
И ещё бравируете тем, что собираетесь обойти бан, если он случится. Вы за помощью зашли на форум или цель другая?
 
Юрий М, Возможно, спросить не буду!
Если бы не это "Хуже другое, BladzheR, по видимому, ничего не понимает про базы данных. Ему бы сначала книги какие-нибудь почитать. ", то ничего бы не было...
Ну и это тоже как-то жестко "И в чем проблема ...", нет, чтобы написать используйте то, то... А для этого есть то и то.
Я не говорю, что собираюсь что-либо обходить )
Естественно зашел за помощью.
Изменено: BladzheR - 21.03.2018 00:04:21
 
Offtop
BladzheR, В моих сообщениях смайлы стоят, я конечно шутил, хотя в каждой шутке есть доля шутки, ибо Юрий правильно написал, что тут фанаты продукта. Но тролить и подначивать совершенно не хотел, думал что на №18 все завершится посмотрев на смайл в 17.
А касаемо этого
Цитата
BladzheR написал:
"Хуже другое,  BladzheR , по видимому
Конечно Андрей не корректно выразился, не зная вашего уровня, но поверьте ему есть с чем сравнивать, а первоначальный запрос наводил на определенные мысли.

А помогать тут всегда готовы.
По вопросам из тем форума, личку не читаю.
 
БМВ, Да, я понял, что вы шутите, надо было в своём ответе побольше смайликов поставить :)

А так это один из лучших форумов по Excel, где действительно помогают!
+ дизайн сайта прикольный, а то на некоторых просто глаза режет :(
Всем успехов!

P.S.
Если вдруг кого задел, извините, не хотел!
Страницы: 1
Наверх