03.06.2014 10:08
 0просмотров 11 0

Анализ протоколов. Импорт в БД.

Скрипт предоставил нам страницу с полным протоколом боёв. На этом его работа закончена, а процесс поиска продолжается.

Для начала нужно сохранить получившуюся страницу протокола. Потом открыть её в текстовом редакторе и удалить все строки, не относящиеся, собственно, к боям. Т.е. оставить только:

&nbsp;&nbsp;<a href="http://www.heroeswm.ru/warlog.php?warid=618480168">03-06-14 07:49</a>: • <b><a class="pi" href="http://www.heroeswm.ru/pl_info.php?id=2477821"><font color="red">FireSwarm[12]</font></a></b> vs <i>Караван Гномов</i><!--66--><br>
&nbsp;&nbsp;<a href="http://www.heroeswm.ru/warlog.php?warid=618322984">02-06-14 11:15</a>: • <b><a class="pi" href="http://www.heroeswm.ru/pl_info.php?id=2477821"><font color="red">FireSwarm[12]</font></a></b> vs <i>Караван Гномов</i><!--66--><br>

И подобные им. Теперь файл готов к дальнейшей обработке. Обработку его я сделаю на любимой джаве. Конечно, эту обработку можно сделать и в скрипте, но не лежит у меня душа к JS. Выглядеть она будет так:

        String[] lines = jTextAreaMainArea.getText().split("\n");
        StringBuffer sb = new StringBuffer();
        String b;
        for (int i = 0; i < lines.length; i++) {
            if (lines.indexOf("-монстр {") > 0) {
                b = lines.substring(lines.indexOf("-монстр {"));
                if (b.indexOf("}</b></i>") < 0) {
                    lines = lines.substring(lines.indexOf("vs <i>") + 6);
                    lines = lines.substring(0, lines.indexOf("<"));
                    sb.append(lines.replace(" {", ";").replace("}", ""));
                    sb.append("\n");
                }
            }
        }
        
        jTextAreaMainArea.setText(sb.toString());

Здесь jTextAreaMainArea - это объект - текстовое поле, содержащий текст протокола. Выбираются все строки, в которых есть монстр и он не выделен жирным шрифтом (не победил) и создаются два столбца - имя монстра и его уровень, разделённые точкой с запятой.
Каждая уважающая себя СУБД имеет свои средства для импорта данных из плоских файлов. Например, в MS SQL Server достаточно создать базу, правой кнопкой мыши кликнуть по ней, выполнить Задачи - Импорт данных и следовать указаниям мастера.

Возможность комментировать доступна после регистрации