Частный пример решения задачи массового импорта биллингов.
Народ, может быть кому-нибудь будет интересно описание реальной задачки массового импорта данных которую мне пришлось решать на днях. Итак, постановка задачи: Дано порядка 150 файлов биллингов от Билайн, 80 файлов биллингов от МЕГАФОН и порядка 200 файлов биллингов от МТС. Все исходные файлы в Excel формате. Нужно все данные загрузить в iBase в виде связей "Абонент А - Абонент Б"; "Абонент - Адрес базовой станции".
Задача осложняется тем, что
а) все файлов биллингов имеют свою собственную структуру (у разных операторов сотовой связи - разный порядок колонок и сами колонки различны)
б) у некоторых операторов биллинги в одном файле Excel представлены на нескольких листах (закладки в Excel).
Я решал эту задачу так (только на примере файлов Билайн, для других операторов все идентично):
1) Преобразовал все Excel файлы в текстовые файлы с разделителями (.csv). Для этого использовал утилиту ssconvert.exe из пакета GNUMERIC. Для этого написал маленький BAT файл:
-------------------
Set SSCONVERT="C:\Program Files (x86)\Gnumeric\1.12.17\bin\ssconvert.exe"
for /r %%i in (*.xls) do (
echo "%%i"
start "" %SSCONVERT% -S "%%i" "%%i.txt"
)
-------------------
Утилита ssconvert.exe конвертит Excel файл в .csv, причем если в исходном файле несколько листов - будут созданы отдельные файлы для каждого листа
2) Соединил все созданные текстовые файлы в один большой файл. Для этого использовал старую команду:
copy *.csv ALL_BEELINE.csv
В результате выполнения этой команды будет создан один большой файл ALL_BEELINE.csv
3) Импортил уже этот один большой текстовый файл в iBase.
=================================================
Почему такой сложный путь? (имею в виду переконвертацию всей информации из Excel в текстовый файл). Ибо я не разобрался как можно массово импортить в iBase информацию из Excel файлов если в исходных файлах может присутствовать по несколько листов с информацией (если строго один лист - тогда все намного проще)
Если кому будет полезна эта информация - хорошо
Если есть дополнительные вопросы - спрашивайте
Если можете посоветовать что-нибудь дополнительно - чудесно!
Народ, может быть кому-нибудь будет интересно описание реальной задачки массового импорта данных которую мне пришлось решать на днях. Итак, постановка задачи: Дано порядка 150 файлов биллингов от Билайн, 80 файлов биллингов от МЕГАФОН и порядка 200 файлов биллингов от МТС. Все исходные файлы в Excel формате. Нужно все данные загрузить в iBase в виде связей "Абонент А - Абонент Б"; "Абонент - Адрес базовой станции".
Задача осложняется тем, что
а) все файлов биллингов имеют свою собственную структуру (у разных операторов сотовой связи - разный порядок колонок и сами колонки различны)
б) у некоторых операторов биллинги в одном файле Excel представлены на нескольких листах (закладки в Excel).
Я решал эту задачу так (только на примере файлов Билайн, для других операторов все идентично):
1) Преобразовал все Excel файлы в текстовые файлы с разделителями (.csv). Для этого использовал утилиту ssconvert.exe из пакета GNUMERIC. Для этого написал маленький BAT файл:
-------------------
Set SSCONVERT="C:\Program Files (x86)\Gnumeric\1.12.17\bin\ssconvert.exe"
for /r %%i in (*.xls) do (
echo "%%i"
start "" %SSCONVERT% -S "%%i" "%%i.txt"
)
-------------------
Утилита ssconvert.exe конвертит Excel файл в .csv, причем если в исходном файле несколько листов - будут созданы отдельные файлы для каждого листа
2) Соединил все созданные текстовые файлы в один большой файл. Для этого использовал старую команду:
copy *.csv ALL_BEELINE.csv
В результате выполнения этой команды будет создан один большой файл ALL_BEELINE.csv
3) Импортил уже этот один большой текстовый файл в iBase.
=================================================
Почему такой сложный путь? (имею в виду переконвертацию всей информации из Excel в текстовый файл). Ибо я не разобрался как можно массово импортить в iBase информацию из Excel файлов если в исходных файлах может присутствовать по несколько листов с информацией (если строго один лист - тогда все намного проще)
Если кому будет полезна эта информация - хорошо
Если есть дополнительные вопросы - спрашивайте
Если можете посоветовать что-нибудь дополнительно - чудесно!