03.06.2014 10:08
0 11 0
Анализ протоколов. Импорт в БД.
Скрипт предоставил нам страницу с полным протоколом боёв. На этом его работа закончена, а процесс поиска продолжается.
Для начала нужно сохранить получившуюся страницу протокола. Потом открыть её в текстовом редакторе и удалить все строки, не относящиеся, собственно, к боям. Т.е. оставить только:
<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>
<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 достаточно создать базу, правой кнопкой мыши кликнуть по ней, выполнить Задачи - Импорт данных и следовать указаниям мастера.
Для начала нужно сохранить получившуюся страницу протокола. Потом открыть её в текстовом редакторе и удалить все строки, не относящиеся, собственно, к боям. Т.е. оставить только:
<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>
<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 достаточно создать базу, правой кнопкой мыши кликнуть по ней, выполнить Задачи - Импорт данных и следовать указаниям мастера.