Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Зазиповать без пробелов. / 2 сообщений из 2, страница 1 из 1
02.02.2015, 12:57
    #38869386
Зазиповать без пробелов.
Добрый день, господа.
Недавно столкнулся с проблемой, которая требует знаний в области кода UNIX-систем. В этой сфере я не разбираюсь и очень надеюсь на Вашу помощь.
Предистория: из компании ушел хороший программист, которому поручили сделать хитрую разработку. Эта разработка была почти доделана (ключевое слово почти), осталось только дотестировать, и перенести на рабочую базу. Но разработчик ушел и эту "легкую" работенку поручили мне, не очень хорошему программисту. В самом коде я с грехом пополам разобрался, несмотря на то, что это явный потолок, на данный момент, моих способностей, но с зипованием (заархивировать в zip формате) наблюдаются проблемы.
Архитектура: сервер Оракла крутится на "Oracle linux 5.10".
Суть разработки: Найти людей с определенным признаком (это будут активные продажники, которые бегают по клиентам с КПК), по ним выгрузить 2 файлика с клиентами и их остатками, закрепленными за этим продажником и продукции с остатками на складе. Эти 2 файлика заархивировать в формат зип (потому что только этот формат может открыть эти кпк) и отправить на фтп.
История: С грехом пополам я разобрался в коде, научился переносить с базы на базу и т.д. По итогу у меня осталась только проблема с архивированием. Пакет, который это все делает ссылается на другой пакет XXRC_OS_COMMAND, который позволяет запускать команды для сервера из под Оракловых пакетов в sql.

Код: plsql
1.
2.
3.
4.
select XXRC_OS_COMMAND.Exec('zip a -d '||tmp_dir||'/import.zip '||tmp_dir||'/'||file_name_clients||' '||tmp_dir||'/'||file_name_products)
--XXRC_OS_COMMAND.Exec('rar a -dh -ep '||tmp_dir||'/import.zip '||tmp_dir||'/'||file_name_clients||' '||tmp_dir||'/'||file_name_products)
into l_tmp_str
from Dual;



tmp_dir - это временная папка, в которой складываются эти txt файлики. Упрощая задачу до смысла мне надо написать правильный код в linux в таком виде:

Код: plsql
1.
zip a (перечисление опций зипования) временная_папка/import.zip временная_папка/клиенты.txt временная_папка/продукция.txt



И ее Величество проблема:
а) При архивировании мне нужен читабельный и открываемый архив ZIP. Тот файл, который я получаю на выходе, открывается только через тотал командер в виндовзе. Файлики, которые раньше делались и пересылались вручную открывались просто, без всякого командера.
б) При архивировании меняется формат этих файликов с UTF-8 на непонятный и строки бьются. Например:
Надо:
Позиция 1 Описание позиции 1 Цена позиции 1(Перенос строки)
Позиция 2 Описание позиции 2 Цена позиции 2
Делает:
Позиция 1 Описание позиции 1 Цена позиции 1 Поз(Перенос строки)
иция 2 Описание позиции 2 Цена позиции 2.

Пример файликов и архивов в приложении.

Вопрос: Как мне записать код, чтобы ушли эти 2 проблемы и архивировало корректно без изменений формата в входящих файлах?
...
Рейтинг: 0 / 0
02.02.2015, 13:05
    #38869408
Зазиповать без пробелов.
Никита Приходько,

Забыл приложение.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Зазиповать без пробелов. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]