|
|
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Добрый день, нужны помощь как в выборе способа реализации, так и самой реализации. Имеем: Есть 8 mdb файлов, размер 400-700 мб. в каждой порядка 1 500 000 строк.(15-20 колонок, из них нужных 4) Есть так же 8 xls файлов размером до 10 мб. и порядка 65 000 строк и 5-6 колонок, нужных 3. что должно получится: xls файл по сути часть файла mdb, у них совпадают все значение кроме 2ух колонок. в mdb: A - артикул B - наименование C - розничная цена D - размер скидки(для получения закупочной стоимости) в xls A - артикул B - наименование C - розничная цена E - остаток Как наверно уже понятно необходимо вывести данные A, B, C*D, E Как я вижу реализацию: 1 Вариант: Организовать работы на основе API запросов. Загружаем в SQL сервер 1 mdb и соответствующий ему 1 xls. При GET "A" к БД, выдаем "POST" "A:mdb,B:mdb, C*D:mdb, E:xls" 2 Вариант: Организовать выгрузку из БД SQL файла на ftp сервер c подстановкой по параметру "A" в xls файл данных из MDB параметра C*D. На словах все вроде бы просто и понятно, а теперь самое главное. я понятия не имею как это все запустить. Я не владею не php, не html, ничем вообще. Но если натолкнете на мысль, думаю смогу что-то приладить или хотя бы найти по фрилансу написать код для такой работы. Есть только небольшой опыт настройки api запросов.Еще один момент, что я работаю в крупной компании, и у меня не ms access, приходится выкручиваться через OO. И все можно было бы реализовать через ИТ отдел, есть соответствующие кадры, но а этой уйдут месяцы. Для себя выбрал след. 1.Ставлю MySQL на win. 2.ставлю ODBC 3.Настраиваю в ODBC загрузку mdb и xls 4а. пишу код для варианту 1 и что-то там еще делаю с RESTful сервером. 4б. пишу код для варианта 2 Склоняюсь к Варанту 2, т.к. вижу его проще, и держать в mysql почти 13 000 000 строк думаю будет уходить много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:21:59 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
А не проще это средствами Access или Excel решить? Мне казалось, что они умеют читать файлы друг друга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:29:09 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Можно. Есть несколько проблем, вроде тех, что Excel не влезает 1 500 000 строк. Хотя наверно моно пойти от обратно и в access залить xls и там уже подменить значения, а настроить от туда отправку полученного файла на ftp думаю будет не сложно. Но боюсь сложностей с тем, что эту процедуру надо выполнять ежедневно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:38:54 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325Есть несколько проблем, вроде тех, что Excel не влезает 1 500 000 строк.А зачем их туда помещать? Ведь в Excel-е, как я понял, всего 65 000 строк и нужно для каждой из них слазить в те 1 500 000 ? Ники25325эту процедуру надо выполнять ежедневно.Тогда очень странно, что этим занимаются не ИТ отдел. Впрочем, если хотите через MySQL - можете делать через MySQL. Вот только MySQL не умеет обращаться к внешним источникам данным в xls и mdb. Т.е. должно быть нечто (например, самописная программа или тот же Access), что подключится к обоим источникам данным и к MySQL и перельет данные туда. А потом другое (или то же самое) нечто подключится к MySQL и выгрузит оттуда нужные данные в файл нужного формата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:52:19 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Если я верно понимаю, каждому MDB соответствет строго один XLS, а сами эти пары ничего общего (кроме структуры) не имеют и обрабатываются отдельно. Верно? Тогда я бы предложил просто в каждый MDB прилинковать XLS как внешнюю таблицу, и сразу запросом прямо в MDB получать требуемые данные. OO теоретически должен уметь это делать. Можно выгрузить всё это барахло на сервер - не проблема. Для ускорения - в том же ОО сохранить таблицы в CSV и дальше LOAD DATA INFILE в базу. А там обрабатывать. Ничуть не хуже вариант. Но... не ясна конечная цель мероприятия. Ники25325Как наверно уже понятно необходимо вывести данные A, B, C*D, E Ну вывели.. куда-то... а дальше? понятно, что ни смотреть, ни печатать это никто не будет - ибо не хватит ни глаз, ни бумаги. Так для чего же это делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:53:48 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
miksoftНики25325Есть несколько проблем, вроде тех, что Excel не влезает 1 500 000 строк.А зачем их туда помещать? Ведь в Excel-е, как я понял, всего 65 000 строк и нужно для каждой из них слазить в те 1 500 000 ? Ники25325эту процедуру надо выполнять ежедневно.Тогда очень странно, что этим занимаются не ИТ отдел. Впрочем, если хотите через MySQL - можете делать через MySQL. Вот только MySQL не умеет обращаться к внешним источникам данным в xls и mdb. Т.е. должно быть нечто (например, самописная программа или тот же Access), что подключится к обоим источникам данным и к MySQL и перельет данные туда. А потом другое (или то же самое) нечто подключится к MySQL и выгрузит оттуда нужные данные в файл нужного формата. ИТ отделу можно поручить, но в последний раз они добавляли в отчет 1С один параметр 2 недели. Может и обращусь к ним, когда будут понимать, что и как делать и, что я не смогу этого реализовать сам. Связь между MySQL и Access насколько я понимаю настраивается через ODBC. Настроить автоматику на заливку, обработку и выгрузку - я либо живу в своем волшебном мире и вижу это довольно простым, либо так оно и есть.(Вероятнее первое) AkinaЕсли я верно понимаю, каждому MDB соответствет строго один XLS, а сами эти пары ничего общего (кроме структуры) не имеют и обрабатываются отдельно. Верно? Тогда я бы предложил просто в каждый MDB прилинковать XLS как внешнюю таблицу, и сразу запросом прямо в MDB получать требуемые данные. OO теоретически должен уметь это делать. Можно выгрузить всё это барахло на сервер - не проблема. Для ускорения - в том же ОО сохранить таблицы в CSV и дальше LOAD DATA INFILE в базу. А там обрабатывать. Ничуть не хуже вариант. Но... не ясна конечная цель мероприятия. Ники25325Как наверно уже понятно необходимо вывести данные A, B, C*D, E Ну вывели.. куда-то... а дальше? понятно, что ни смотреть, ни печатать это никто не будет - ибо не хватит ни глаз, ни бумаги. Так для чего же это делается? Строго соответствуют. А что кроме структуры у них может быть еще ? Вопрос по линкованию: Я линкую MDB с XLS, получаю таблицу XLS открытую в ACCES, в которую при совпадении A могу подставить данные из MDB(C*D). А затем полученную таблицу экспортирую в XLS. В таком случае все бы устроило, автоматизировать все думаю получится макросами. Но сдается мне все это будет не хило грузит систему. Идея с SQL сервером мне тем и нравится, что все будет обрабатываться через OBDС, что мне кажется должно увеличить скорость всех этих процедур и там будет легче автоматизировать. Полученные файлы(8 шт) будут отправляться на ftp сервер или по почте, для дальнейшей обработки уже другой компании(скидываем им свои остатки товара) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:29:32 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325Связь между MySQL и Access насколько я понимаю настраивается через ODBC.Но только в одну сторону - Access может обращаться к MySQL. Но не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:37:03 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325Строго соответствуют. А что кроме структуры у них может быть еще ?Ну например это может быть хронология - т.е. каждая база почти полностью перекрывается следующей, с небольшими изменениями. Т.е. есть соответствие между данными в разных MDB. Ники25325Вопрос по линкованию: Я линкую MDB с XLS, получаю таблицу XLS открытую в ACCES, в которую при совпадении A могу подставить данные из MDB(C*D). А затем полученную таблицу экспортирую в XLS. В таком случае все бы устроило, автоматизировать все думаю получится макросами. Но сдается мне все это будет не хило грузит систему. Полтора кк записей связать с 65к строк прилинкованного файла? да ни фига. А если ещё и таблица индексирована, а если ещё и XLS не связывать, а импортировать, да с созданием нужного индекса... даже не забивай себе мозг этой ерундой. Ники25325затем полученную таблицу экспортирую в XLS.А вот это нахуа? Ники25325Идея с SQL сервером мне тем и нравится, что все будет обрабатываться через OBDС, что мне кажется должно увеличить скорость всех этих процедур и там будет легче автоматизировать.ODBC как ускоритель обработки - это ты мощно задвинул! Нет, обрабатываться-то будет быстрее, но не потому, что ODBC, а потому, что SQL-сервер. Ники25325Полученные файлы(8 шт) будут отправляться на ftp сервер или по почте, для дальнейшей обработки уже другой компании(скидываем им свои остатки товара)Тогда делай всё в Access и не забивай себе мозг. Сделай отдельную БД с обработкой, в ней прилинкованные таблицы и из MDB, и из XLS. Слинковал нужные, жмакнул макрос на выполнение, выгреб файл-результат, обрабатывай следующую пару. Один макрос из 3 макрокоманд и один запрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 16:27:25 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
AkinaНики25325Строго соответствуют. А что кроме структуры у них может быть еще ?Ну например это может быть хронология - т.е. каждая база почти полностью перекрывается следующей, с небольшими изменениями. Т.е. есть соответствие между данными в разных MDB. Ники25325Вопрос по линкованию: Я линкую MDB с XLS, получаю таблицу XLS открытую в ACCES, в которую при совпадении A могу подставить данные из MDB(C*D). А затем полученную таблицу экспортирую в XLS. В таком случае все бы устроило, автоматизировать все думаю получится макросами. Но сдается мне все это будет не хило грузит систему. Полтора кк записей связать с 65к строк прилинкованного файла? да ни фига. А если ещё и таблица индексирована, а если ещё и XLS не связывать, а импортировать, да с созданием нужного индекса... даже не забивай себе мозг этой ерундой. Ники25325затем полученную таблицу экспортирую в XLS.А вот это нахуа? Ники25325Идея с SQL сервером мне тем и нравится, что все будет обрабатываться через OBDС, что мне кажется должно увеличить скорость всех этих процедур и там будет легче автоматизировать.ODBC как ускоритель обработки - это ты мощно задвинул! Нет, обрабатываться-то будет быстрее, но не потому, что ODBC, а потому, что SQL-сервер. Ники25325Полученные файлы(8 шт) будут отправляться на ftp сервер или по почте, для дальнейшей обработки уже другой компании(скидываем им свои остатки товара)Тогда делай всё в Access и не забивай себе мозг. Сделай отдельную БД с обработкой, в ней прилинкованные таблицы и из MDB, и из XLS. Слинковал нужные, жмакнул макрос на выполнение, выгреб файл-результат, обрабатывай следующую пару. Один макрос из 3 макрокоманд и один запрос... Не совсем понял, сначала пишем про линкование ".... даже не забивай себе мозг этой ерундой...", а потом "...Слинковал нужные, жмакнул макрос..." Access пообещали в понедельники поставить(чудом оказалась свободная лицензия), попробую линковать, посмотрим как это будет сильно напрягать систему и сколько потребуется времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 18:40:08 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325Не совсем понял, сначала пишем про линкование ".... даже не забивай себе мозг этой ерундой...", а потом "...Слинковал нужные, жмакнул макрос..."Ерунда - это предположение, что такая мелочь сильно нагрузит систему. Поверь - на такой задаче комп даже не поморщится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 19:05:22 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Поставили сегодня Access благо свободная лицензия одна осталась. Я же правильно понял, что делал линкование как свзяь двух таблиц и выведением запроса и сох-ранение результатов ? Все вроде получилось, но довольно долго, буду экспериментировать с настройкам а потом писать макрос на автоматизацию. Всем спасибо, но я наверное еще попрошу помощи в написание макроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2015, 16:10:07 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325Всем спасибо, но я наверное еще попрошу помощи в написание макроса.Ну так может топик в подфорум по Access-у перенести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2015, 16:12:17 |
|
||
|
Данные из Access, XLS в SQL и обратно в XLS или через API
|
|||
|---|---|---|---|
|
#18+
Ники25325, Добрый день! №1 Решения задачи на Access. 1) Линковка листа Excel с Access. (К листу в excel можно будет обращаться из Access напрямую.) 2) Далее обработка SQL запросом (при объединении обрати внимание на объединение Join. Возможно у вас не Inner, а скорее Full). 3) Выгрузка в Excel (SQL запроса из шага 2). Ограничения порядка 600 тыс. строк. Если для совета, то организовывайте аналитическое хранилище. Пусть пока на Access. Более подробно с технологией можно ознакомится тут www.biwed.ru/index.php/access (Почитать и посмотреть видео). Там и линкование, и хранилище и выгрузка 200 тыс. строк и оценка объемов и постановка задачи. Замечание №1: по поводу вывода 1,5 М строк. То они вам не понадобятся. В зависимости от задачи будете использовать Group by и фильтрацию по времени, что уменьшит задачу ниже 600 тыс. Прошу заметить, что розничная цена - это цена на определенный день или промежуток времени. Замечание №2: Задача с отставками 65 000 срок в день, это довольно сложная задача. Примерные годовые объемы 65 000 * 365 = 23 725 000. Эффективно решается только на OLAP кубах, расчета остатков на каждый день. Замечание №3: "Как наверно уже понятно необходимо вывести данные A, B, C*D, E". Это не постановка задачи. Так как из какой таблицы берется C? Он присутствует в обоих. Просто скорее всего вы хотите получить товарный запас в деньгах (количество товара * розничную стоимость) и в себестоимости (количество товара * себестоимость) на определенный день. Тогда на выходе у вас должно получится не более 65 000 строк. Подумайте над постановкой задачи. №2 Решение на Pentaho (на перспективу). 1) Берете PDI заливаете на все файлы MDB в СУБД (MySQL или другую). (предварительно надо понимать, что не должны появиться дубли). 2) Выбираете любую СУБД (Можно Mysql. Хотя рекомендовал бы PostgreSQL). 3) Настраиваете ETL процессы на добавление информации. (В справочники и прочее). 4) Проектируете OLAP кубы. 5) Настраиваете Pentaho BI server. 6) И пользуетесь. Ссылку давать пока нет смысла. Q) ... Настроить автоматику на заливку, обработку и выгрузку - я либо живу в своем волшебном мире и вижу это довольно простым, либо так оно и есть.(Вероятнее первое) A) На PDI можно все автоматизировать. ETL сервера позволяют сделать это в автоматическом режиме причем на любой СУБД, а про написание макросов, то это только временный выход. ETL остается, а все остальное может меняться. На вход или выход любые СУБД и файлы. Освоите, многие задачи будут казаться после этого простыми, например ваша. PS. А вообще почитайте про Business Intelligence. Это ваш шаг в будущее. С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 03:50:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38890552&tid=1833508]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 366ms |

| 0 / 0 |
