генерация строк по регулярному выражению

Mapkyc

Профессор
Регистрация
8 Май 2007
Сообщения
107
Реакции
47
Вообщем хочу забить в базу все возможные четырехсимвольные домены состоящие из букв и цифр..т.е.

"#[a-z0-9]{4}\.ru#"

как перебрать все возможные комбинации , чтобы сформировать массив или добавить такую строку в БД
 
про функцию range я не знал...спасибо=)

вот как бы теперь все это в мускульную таблицу запихать в один подход..
 
за один подход лучше не стоит
слишком большой объем данных.
где-то читал, что лучше всего по скорости добавлять за раз примерно по 1000 строк
о есть лучше всего вставлять в базу данные в конце каждой итерации второго цикла
внутри него еще два цикла, что дает 1296 строк за раз
про функцию range я не знал...спасибо=)
вот как бы теперь все это в мускульную таблицу запихать в один подход..
 
много запросов получится, оптимальнее импорт из файла

Код:
LOAD DATA LOCAL INFILE '/home/user/public_html/res.txt'
INTO TABLE table_name
LINES TERMINATED BY '\n'
(field_name);
 
ещё вариант всё сделать в mysql, нужны две таблицы, первая алфавит с символами для комбинаций:
Код:
CREATE TABLE IF NOT EXISTS `alphabet` (
  `alpha` varchar(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `alphabet` (`alpha`) VALUES
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'), ('o'), ('p'), ('q'), ('r'), ('s'), ('t'), ('u'), ('v'), ('w'), ('x'), ('y'), ('z'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('0');
А вторая таблица domain:
Код:
CREATE TABLE IF NOT EXISTS `domain` (
  `domain` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
в которую надо записать комбинации.

А комбинации генерируются запросом:
Код:
INSERT INTO domain (
    SELECT CONCAT(t1.alpha, t2.alpha, t3.alpha, t4.alpha, '.ru') domain
    FROM alphabet t1, alphabet t2, alphabet t3, alphabet t4
);
пример запроса для числовых доменов
Код:
SELECT domain
FROM domain
WHERE domain REGEXP '[0-9]{4}\.ru'
или например сгенерировать по регулярке из таблицы с алфавитом только числовые домены
Код:
SELECT CONCAT(t1.alpha, t2.alpha, t3.alpha, t4.alpha, '.ru') domain
FROM alphabet t1, alphabet t2, alphabet t3, alphabet t4
WHERE CONCAT(t1.alpha, t2.alpha, t3.alpha, t4.alpha, '.ru') REGEXP '[0-9]{4}\.ru'
 
Назад
Сверху