Распарсиваем базу AOL. Пошаговое руководство.

Отвечая на коммент в предыдущей статье, сваял мануал:

Скачали 10 файлов баз и распаковали их в отдельную папку, у меня это E:\aol.


Переименуем их для простоты в 1.txt – 10.txt.

Запускаем Microsoft Access и создаем новую базу данных.


Называем базу “aol”

Идем в меню "Файл", "внешние данные", "связь с таблицами".


Выбираем тип файлов- "текстовые"

Выбираем первый файл 1.txt

И создаем с ним связь. Выбираем формат данных- с разделителями, нажимаем «Далее».

Разделителем ставим символ табуляции и ставим галочку "Первая строка содержит имена полей".

Теперь нужно выбрать поля для импорта. Нам нужно только второе поле "Query", а остальным полям ставим галочку "не импортировать (пропустить) поле".





Нажимаем "далее", имя связанной таблицы оставляем по умолчанию.

Нажимаем "Готово"- все связь установлена.

Получаем вот такую картину, теперь у нас появилась таблица "1":

Снова идем в меню "Файл", "внешние данные", "связь с таблицами". Выбираем следующий текстовый файл и повторяем процедуру подключения.

Таким образом подключаются все 10 файлов. В результате должно получиться вот что:

Теперь нужно создать запросы на выборку. Идем в "Запросы", "Создание запроса с помощью мастера".

Выбираем "Таблица 1", поле "Query".

Имя запроса оставляем по умолчанию. Нажимаем "Изменить макет запроса".

И попадаем вот сюда:

Идем в меню "Вид", "Режим "SQL".

Видим вот такой текст запроса:

Меняем его вот на такой запрос:


SELECT DISTINCT [1].[Query]
FROM 1
ORDER BY [1].[Query];


Сохраняем макет запроса и закрываем конструктор. Запускаем запрос и ждем пару минут...

Получаем следующую таблицу- результат выборки:

Не закрывая окно, идем в меню "Файл", "Экспорт".

Формат экспорта- "текстовые файлы":

Обзываем результирующий файл “b1.txt” и нажимаем "Сохранить все":

Далее запускается мастер экспорта, где выбираем формат экспорта- "с разделителями" и нажимаем кнопку "Дополнительно":

Ставим настройки как на рисунке и нажимаем "ОК".

Ждем несколько секунд, а может и минут и получаем вот такую картину:

Нажимаем "Далее".

И «Готово».

Файл “b1.txt” содержит только уникальные записи колонки “Query”.

Повторяем процедуру выборки из остальных подключенных таблиц. Можно создать еще 9 запросов, а можно редактировать первый, меняя имя таблицы "1" на "2"-"10".

В результате получим 10 файлов по 1.2 млн. уникальных запросов в каждом.

Кроме кейвордов в этих файлах содержится некоторое количество строк мусора, который желательно удалить из базы. Это можно сделать в каком-нибудь текстовом редакторе, удобнее всего, на мой взгляд, чистить базу в "TextPipePro". Но об этом в следующий раз.

18 сентября 2007, 13:24
Вопрос
У меня такой вопрос. Не силен я в аксесс.
Здесь мы вибираем уникальные запросы. Но не знаем их частоту. Как реализовать такой запрос чтобы выбрать повторяющиеся, например 1000 раз запросы юзеров из всех десяти файлов.

ringo =email=
18 сентября 2007, 16:13
Без темы
Навскидку без оптимизации.
Для этого нужно:
1.на этапе распарсивания ипользовать запрос:
SELECT [1].[Query]
FROM 1
ORDER BY [1].[Query];
2.Слить получившиеся файлы в один b.txt
3.Подключить этот файл в Access
4.Использовать для выборки следующий запрос:
SELECT [query]
FROM b
GROUP BY [query]
HAVING Count(*) = n;
где n - это требуемое число повторов.
Но имейте в виду, что база с дубликатами (а в вашем случае нужно использовать ее) намного больше, чем база без дубликатов.
И выполнение запроса требует гораздо большего времени.

seng =email=
18 сентября 2007, 20:39
Без темы
Спасибо. Попробую так отобрать. Ресурсы вроде позволяют.

ringo =email=
29 сентября 2007, 23:43
Без темы
спасибо за разжевывание. не знал, как из базы аола грамотно кеи вытянуть, валялась база без применения, пока не наткнулся на статью.
Огромное спасибо

Anonymous
02 октября 2007, 04:46
Без темы
Блин не работает такой запрос. Не выдает никаких результатов. При запуске просит ввести query. Все что угодно туда вводил и пустое поле оставлял. Выдает пустую таблицу с заголовком query.

ringo =email=
02 октября 2007, 09:28
Без темы
Запрос работает, я проверял.
Если просит ввести query, то значит он не видит в таблице 1 поля query.
Проверьте, чтобы в подключенной таблице поле называлось именно так.

seng =email=

Адрес заметки: http://senglab.info/blog/post_1190060632.html


Обязательные для заполнения поля помечены карандашом.


Ваш комментарий к статье
cod

email при указании не будет опубликован.
Адреса с http:// преобразуются в ссылки автоматически.
Для этого отделяйте их от текста ПРОБЕЛАМИ с обеих концов.
Теги запрещены.
Page created in 0.13861 seconds Powered by LastoBlog