Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
Добрый день, господа.
Недавно столкнулся с проблемой, которая требует знаний в области кода UNIX-систем. В этой сфере я не разбираюсь и очень надеюсь на Вашу помощь.
Предистория: из компании ушел хороший программист, которому поручили сделать хитрую разработку. Эта разработка была почти доделана (ключевое слово почти), осталось только дотестировать, и перенести на рабочую базу. Но разработчик ушел и эту "легкую" работенку поручили мне, не очень хорошему программисту. В самом коде я с грехом пополам разобрался, несмотря на то, что это явный потолок, на данный момент, моих способностей, но с зипованием (заархивировать в zip формате) наблюдаются проблемы.
Архитектура: сервер Оракла крутится на "Oracle linux 5.10".
Суть разработки: Найти людей с определенным признаком (это будут активные продажники, которые бегают по клиентам с КПК), по ним выгрузить 2 файлика с клиентами и их остатками, закрепленными за этим продажником и продукции с остатками на складе. Эти 2 файлика заархивировать в формат зип (потому что только этот формат может открыть эти кпк) и отправить на фтп.
История: С грехом пополам я разобрался в коде, научился переносить с базы на базу и т.д. По итогу у меня осталась только проблема с архивированием. Пакет, который это все делает ссылается на другой пакет XXRC_OS_COMMAND, который позволяет запускать команды для сервера из под Оракловых пакетов в sql.
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 в таком виде:
zip a (перечисление опций зипования) временная_папка/import.zip временная_папка/клиенты.txt временная_папка/продукция.txt

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

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

Вопрос: Как мне записать код, чтобы ушли эти 2 проблемы и архивировало корректно без изменений формата в входящих файлах?

К сообщению приложен файл (Проблема для sql.ru.rar - 43Kb) cкачать
2 фев 15, 13:12    [17206156]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько
а) При архивировании мне нужен читабельный и открываемый архив ZIP. Тот файл, который я получаю на выходе, открывается только через тотал командер в виндовзе. Файлики, которые раньше делались и пересылались вручную открывались просто, без всякого командера.

Тот неверный архив.zip на самом деле не зип, а рар и поэтому у тебя в винде не открывается. На сколько я помню именно rar с ключом "a", зип пакует без ключа, синтаксис такой zip file.zip *.*
2 фев 15, 14:04    [17206594]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько,

До запаковки ты файлы можешь посмотреть? Они уже в кривой кодировки?
Мне кажется тут проблема не архиватора с кодировкой.
2 фев 15, 14:06    [17206609]     Ответить | Цитировать Сообщить модератору
 Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel,
2 фев 15, 14:40    [17206881]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel
Тот неверный архив.zip на самом деле не зип, а рар и поэтому у тебя в винде не открывается. На сколько я помню именно rar с ключом "a", зип пакует без ключа, синтаксис такой zip file.zip *.*

Смотри, пользуюсь ведь я командой зипа. Как у меня может быть рар? Зип пакует с ключом, перепроверял уже.
2 фев 15, 14:44    [17206906]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько
blkangel
Тот неверный архив.zip на самом деле не зип, а рар и поэтому у тебя в винде не открывается. На сколько я помню именно rar с ключом "a", зип пакует без ключа, синтаксис такой zip file.zip *.*

Смотри, пользуюсь ведь я командой зипа. Как у меня может быть рар? Зип пакует с ключом, перепроверял уже.


Если у тебя в приложенном файле
Архив неправильно.zip
подлинник, то это рар.
Как получилось, что вместо zip получается rar? у меня два варианта:
1. Программист который ушел сделал скрытую подлянку.
2. Это сделано намерено, причин которых здесь не описано.
2 фев 15, 14:50    [17206953]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel
Никита Приходько,

До запаковки ты файлы можешь посмотреть? Они уже в кривой кодировки?
Мне кажется тут проблема не архиватора с кодировкой.


Проверял, попросил сисадмина скинуть файлики. Все норм. Можно посмотреть в приложении.

К сообщению приложен файл (На_сервер_до_архивирования.txt - 459bytes) cкачать
2 фев 15, 15:11    [17207083]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько,
Тогда тебе смело на другой форум. :)
2 фев 15, 15:15    [17207099]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel,

Только что стакнулся с сисадмином и определили, что действительно рар.

автор
1. Программист который ушел сделал скрытую подлянку.
2. Это сделано намерено, причин которых здесь не описано.


1 отлетает сразу. Погромист этот даже веганом стал, чтоб никого не обижать ради еды.
2 чес-слово не пытаюсь никого обмануть. Т.е. это происходит без моего коварного участия и я разобраться не могу, прошу помощи. Подкиньте идею, куда посмотреть или что исправить, чтобы архив создавался зип а не рар.
2 фев 15, 15:51    [17207316]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel,

Со смищными картинками? Нет, думаю правильно все сделал :)
2 фев 15, 15:52    [17207323]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько,

Твои обе проблемы выходят за пределы Оракла...
1. Почему рар не зип, да потому что в линуксе кто то ZIP подменил RARom
2. Ну вот уж чтобы точно сказать, что Оракл не причем, выполни команду которую ты собираешь непосредственно в никсе. После того, как команда пройдет, файлы будут битые (если это не так, то это может значит, что вы неправильно диагностируете проблему и выкладываете эти выводы сюда).
Если столкнетесь еще раз с сис. админом, он решит Ваши проблемы, задайте все вопросы которые задали тут, При разгоре с сис. админом не упоминайте слово "Оракл" (сразу пошлет)
2 фев 15, 15:59    [17207369]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Никита Приходько
Member

Откуда: Харьков
Сообщений: 48
blkangel,

Очень даже может быть. Но в ветке unix-систем тихо как в гробу.
[url=]https://www.sql.ru/forum/1140399/zazipovat-bez-probelov[/url]

автор
1. Почему рар не зип, да потому что в линуксе кто то ZIP подменил RARom

Как такое может быть? Т.е. толкнуть сисадмина я могу, но что мне сказать? АААА, наш драгоценный зип украли и подменили его рар-ом?

автор
2. Ну вот уж чтобы точно сказать, что Оракл не причем, выполни команду которую ты собираешь непосредственно в никсе. После того, как команда пройдет, файлы будут битые (если это не так, то это может значит, что вы неправильно диагностируете проблему и выкладываете эти выводы сюда).
Если столкнетесь еще раз с сис. админом, он решит Ваши проблемы, задайте все вопросы которые задали тут, При разгоре с сис. админом не упоминайте слово "Оракл" (сразу пошлет)


Сам я не имею возможности это сделать. Я тогда попрошу его запустить эту команду из-под строки, может это даст какую-то информацию?
2 фев 15, 16:11    [17207459]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
blkangel
Member

Откуда:
Сообщений: 1982
Никита Приходько,
Даешь команду сис. админу, он выполняет. А ты ему сразу.
1. Видишь мы запускаем зип, а получается рар.
2. А че за херь, архив битый...
3. В догонку ему, "пойду к боссу, скажу, что проблема не в разработке, а на уровне платформы, передал трабл. сис. админу."
2 фев 15, 16:31    [17207596]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
roadster
Member [заблокирован]

Откуда: "Церковь тяжеловооружённого Христа" ©
Сообщений: 52495
Никита Приходько
автор
1. Почему рар не зип, да потому что в линуксе кто то ZIP подменил RARom

Как такое может быть?
в твоей строке архивирования
select XXRC_OS_COMMAND.Exec('zip a -d '||tmp_dir||'/import.zip '||tmp_dir||'/'||file_name_clients||' '||tmp_dir||'/'||file_name_products)
"zip" может быть:
1. ссылкой на рар
2. жёсткой ссылкой на рар
3. псевдонимом для рар
4. как уже сказали он тупо подменён
так что всё это к сисадмину, пусть смотрит под пользователем, под которым оракл работает (скорее всего oracle) переменные окружения и содержимое домашней директории.
есть вариант явного указания пути к архиватору, но это спроси у админа.
так что все пути лежат к админу.
2 фев 15, 16:51    [17207714]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51773
"zip" и "pkzip" это две разные вещи вообще-то...
2 фев 15, 17:02    [17207788]     Ответить | Цитировать Сообщить модератору
 Re: Зазиповать без пробелов.  [new]
NikolayV81
Member

Откуда: Москва
Сообщений: 1112
Никита Приходько
...

по поводу переносов, у вас проблема "в архитектуре", дело в том что zip -a преобразует архив к ascii, исходники у вас в UTF-8 ( судя по архиву в приложении ) должно кодироваться в ascii ?
Так же вопрос в том что у вас в архиве лежат исходные текстовики с linux-овыми переносами, а в "правильных файлах" лежат с виндовыми, вам какие нужно?

p.s. про то что у вас zip есть симлинк к крякнутому? rar-у тут уже написали...
2 фев 15, 19:14    [17208551]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить