|
|
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Всем привет, сам ниразу ни скриптер, а чистый программист, возникла такая задача, в общем на одном предприятии где установлен наш программный продукт(который представляет из себя бек+фронтофис) возникла утечка интернет траффика, лимиты превышены в разы, потому что ктото из сотрудников завсегдатай торрентов и любитель танков, так вот предложили идею силами нашего ПО + любого стороннего трафик-монитора смотреть отчеты по трафику по каждому сотруднику(у каждого свой пк), 1-е что пришло в голову - программа по учету траффика(к примеру http://ipstat.code-art.ru/) стоит у них на серве, сохраняет логи в какунибудь директорию, потом нашим ПО мы эти файлы открываем, инсёртим в бд, и вроде все красиво, НО ведь автоматизация уже давно шагает по стране и вручную каждый день пихать эти логи в ПО(по другому никак) как то не айс, поэтому придумали следующее пишем скрипт на баше/авк который сам себя запускает, из лог файлов формирует инсёрт, и потом запиливает это всё в FireBird, но повторюсь, что я ниразу не скриптер, пишу сейчас в awk и не пойму почему всё что у меня в теле скрипта идёт на print? вот к примеру: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Он выводит мне в консоль insert = insert +.......$10");" ^syntax error хотя должен клеить строку, а уже в end вывести мне её в консоль ЧЯДНТ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 06:59 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
С чего вы взяли, что пользователи виноваты? Может у вас ботнет или что-то подобное, а пользователи ни сном ни духом Как у вас выход в инет организован? ЗЫ.А пользователи как пить дать на виндах сидят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 07:41 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Судя по тому, что вы написали - у вас выход через *х машину Поставьте , например, на ней ntop, посмотрите что у вас происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 07:46 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
landy , никаких бот сетей и прочего сверхестественного, все что происходит банально просто - я сам смотрел эти логи, через каждую вторую строчку пакеты с серверов world of tanks, соц сетей, файлообменников и ютуба, все что мне нужно просто залить их в базу, а то что через йух машину, оно и понятно, синтаксиса не знаю, сижу гуглю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 09:30 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
зы, немного поясню - все пользователи сидят на винде, сервер-шлюз с firebird на clearOS'и, на нем и нужен скрипт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 09:36 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkeyОн выводит мне в консоль insert = insert +.......$10");" ^syntax error хотя должен клеить строку,Вроде как в awk пробел является символом конкатенции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 10:03 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
на самом деле вообще тупо слитно, это я по привычке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 10:31 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Боле-менее освоился я в скриптах, теперь проблема в следующем, мне нужно передать файловый поток с awk в isql, делаю вроде все как по гуглу: путь к isql -u Юзер -p Пароль localhost:база, вроде коннектится, так как ругнулся пару раз на неправильный пароль, потом стал выдавать мне Expected end of statement, encountered eof сам скрипт на баше выглядит так: Код: powershell 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 11:37 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Ну и хорошо Поставьте ntop - он вам по хостам на интерфейсах статистику покажет, графики нарисует и т д и т п Пишет он в базу RRD Просто и быстро, все сразу увидите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 12:09 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkey Expected end of statement, encountered eof isql исполняет SQL скрипт, состоящий как минимум из одного SQL оператора, обычно разделитель ";", если командой "set term" явно нет задан другой. В общем точку с запятой пробовали в конце каждой команды ставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 15:44 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky Expected end of statement, encountered eof isql исполняет SQL скрипт, состоящий как минимум из одного SQL оператора, обычно разделитель ";", если командой "set term" явно нет задан другой. В общем точку с запятой пробовали в конце каждой команды ставить?[/quot] Да я уже незнаю куда её прилепить, в туториале ваще всё без ; http://www.firebirdfaq.org/faq124/, пичалька в общем пока=( landy с радостью бы поставил эту наиполезнейшую утилиту ихнему начальнику на комп и пошел бы курить плюшки=), но задача к сожалению стоит другая, нужно своё а не чужое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 17:28 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
разреж требопровод на 2 части и отлаживай порознь. 0 echo CONNECT 'localhost:/home/db/data/ichin/ichin.gdb' USER 'SYSDBA' PASSWORD '*********'; > a.sql 1 zcat /home/db/traf/*.gz | awk -f testscript_awk >> a.sql 2 /opt/firebird/bin/isql -i a.sql пример корректного скрипта: CONNECT 'localhost:/home/db/data/ichin/ichin.gdb' USER 'SYSDBA' PASSWORD '*********'; select cast(372.450/10.0 as numeric(9,2)) from rdb$database; select cast(372.45/10 as numeric(9,2)) from rdb$database; commit; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2013, 18:17 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyразреж требопровод на 2 части и отлаживай порознь. Спасибо, только так он у меня и заработал=) Теперь вопрос такой, как сформировать дату из переменно средствами awt/bash? поля $9 и $10 это timestamp(к примеру 1362457150 ), который чтобы запихнуть в таблицу нужно привести в нормальный вид, firebird почему то не хочет кастовать таймстамп из инта 1362457150 , зато UNIX-команда date Код: powershell 1. выдает нормальную дату 050313 15:19:10 , которую можно кастонуть, но теперь проблема следущая - нехотит делать дату из поля Код: powershell 1. инвалид чар @ ин експрешен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 08:48 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkeyвыдает нормальную дату 050313 15:19:10 воткни пару точек до вида 05.03.13 15:19:10 и скорми isql, он съест, можно и не кастовать более никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 12:07 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkey Код: powershell 1. -d @1362457150 +%d.%m.%y" "%T ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 12:09 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
коммиты в скрипте на забудь расставить, один коммит на примерно тыщу инсертов обычно самое оно, реже будут длинные транзакции и память кушать будет, слишком часто тормозить будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 12:13 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkeyIvan_Pisarevskyразреж требопровод на 2 части и отлаживай порознь. Спасибо, только так он у меня и заработал=) Теперь вопрос такой, как сформировать дату из переменно средствами awt/bash? поля $9 и $10 это timestamp(к примеру 1362457150 ), который чтобы запихнуть в таблицу нужно привести в нормальный вид, firebird почему то не хочет кастовать таймстамп из инта 1362457150 , зато UNIX-команда date Код: powershell 1. выдает нормальную дату 050313 15:19:10 , которую можно кастонуть, но теперь проблема следущая - нехотит делать дату из поля Код: powershell 1. инвалид чар @ ин експрешен Код: html 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 13:17 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyтормозить будет.узким местом будет парсинг миллионов инсертов, супер глупо решать эту задачу скриптом, неужели в firebird нет инструментов для загрузки текстовых файлов? лоадеров? внешних таблиц? Ну и в любом случае идиотизм писать в текстовые файлы, потом их парсить и лупить в бд, проще прямо писать в бд, зачем файлы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 17:10 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Журавлев Денисузким местом будет парсинг миллионов инсертов, супер глупо решать эту задачу скриптомпросили скриптом, я подсказал. Миллион инсертов на самом деле отработает достаточно быстро, для "раз в месяц" пойдет. Журавлев Дениснеужели в firebird нет инструментов для загрузки текстовых файлов?как такового нет, но решается через те самые внешние таблицы, они есть. Да, заливка через экстернал тэйблз будет существенно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2013, 19:04 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисНу и в любом случае идиотизм писать в текстовые файлы, потом их парсить и лупить в бд, проще прямо писать в бд, зачем файлы? Согласен 100%, но не нашел как кормить isql запросами напрямую, т.е он у меня выдавал ошибку когда я пытался ему пихать напрямую, а из файла всё спокойно сьел, вот пример Код: powershell 1. Выдает ошибку, НО Код: powershell 1. Полёт нормальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 06:38 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
whizzzkeyЖуравлев ДенисНу и в любом случае идиотизм писать в текстовые файлы, потом их парсить и лупить в бд, проще прямо писать в бд, зачем файлы? Согласен 100%, но не нашел как кормить isql запросами напрямую, т.е он у меня выдавал ошибку когда я пытался ему пихать напрямую, а из файла всё спокойно сьел, вот пример Код: powershell 1. Выдает ошибку, НО дак естественно через stdin надо, никто sql запросы через параметры не ест. В любом случае напрямую это через odbc, jdbc и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 09:35 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисВ любом случае напрямую это через odbc, jdbc и т.д.ОДБЦ это посредник, isql работает с сервером напрямую (через клиентсукю либу fbclient.so), боюсь одбц путь не спрямит. whizzzkeyВыдает ошибкутебе бы langref.pdf и прочие доки почитать, www.ibase.ru и далее по порядку. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 13:07 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyЖуравлев ДенисВ любом случае напрямую это через odbc, jdbc и т.д.ОДБЦ это посредник, isql работает с сервером напрямую (через клиентсукю либу fbclient.so), боюсь одбц путь не спрямит. проблема только в том что isql это программа, которой нужно парсить скрипт, которая не может запрепарить курсор и вставлять пачку строк одним exec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 14:28 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Журавлев Дениспроблема только в том что isql это программа, которой нужно парсить скрипт, которая не может запрепарить курсор и вставлять пачку строк одним exec Вообще-то - может. Но ТС явно не знает о set bult_insert. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 14:39 |
|
||
|
Сформировать Insert на основе текстового файла AWK
|
|||
|---|---|---|---|
|
#18+
Журавлев Дениснужно парсить скрипт,Для задачи описанной в первом посте за глаза, ночью состряпать скрпит, врядли там более миллиона строк и зафигачить его в базу, никто и не заметит нагрузки. Честно говоря не вижу причин выискивать в этой задаче как выиграть несколько минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2013, 14:50 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=38174397&tid=1483061]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 171ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...