Чем сделать выборку из базы? - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD63346.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 17.04.2013, 13:45   #1
Weil
Senior Member
 
Регистрация: 30.06.2007
Сообщений: 107
Бабло: $44000
По умолчанию Чем сделать выборку из базы?

Есть файл baza.txt ~10млн строк. Есть файл keys.txt с несколькими сотнями ключевиков построчно, по которым нужно последовательно по одному сделать выборку из baza.txt и записать в соответствующие файлы на выходе: key1.txt, key2.txt ... и тд.
Weil вне форума  
Старый 17.04.2013, 14:43   #2
spasibo
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 131
Бабло: $28815
По умолчанию

попробуй так.

PHP код:
<?php
set_time_limit
(0);

$f1 fopen("baza.txt""r");
$f2 fopen("keys.txt""r");
while (!
feof($f2)) {
  
$key trim(fgets($f2));
  while (!
feof($f1)) {
    
$w trim(fgets($f1));
    if(
stripos($w,$key)){
      
file_put_contents ($key.'txt'$w.PHP_EOLFILE_APPEND LOCK_EX);
    }
  }
}
fclose($f1);
fclose($f2);

echo 
'done';
spasibo вне форума  
Старый 17.04.2013, 15:11   #3
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
По умолчанию

Цитата:
PHP код:
... if(stripos($w,$key)){ ... 
PHP код:
if(stripos($w,$key) !== false){ 
dveredel вне форума  
Старый 17.04.2013, 15:23   #4
Weil
Senior Member
 
Регистрация: 30.06.2007
Сообщений: 107
Бабло: $44000
ТС -->
автор темы ТС По умолчанию

Благодарю! Правда, денвер у меня не установлен... Скрипт справится с 300МБ файлом?
Из десктопных прог побовал TextPipe, но так и не нашел как там делать вывод во множество файлов.
Weil вне форума  
Старый 17.04.2013, 15:33   #5
spasibo
Senior Member
 
Регистрация: 14.04.2013
Сообщений: 131
Бабло: $28815
По умолчанию

Цитата:
Сообщение от Weil Посмотреть сообщение
Благодарю! Правда, денвер у меня не установлен... Скрипт справится с 300МБ файлом?
Из десктопных прог побовал TextPipe, но так и не нашел как там делать вывод во множество файлов.
справится. тут построчное чтение.
вместо денвера попробуй http://open-server.ru/download.html
spasibo вне форума  
Старый 17.04.2013, 20:11   #6
inkubus
Senior Member
 
Аватар для inkubus
 
Регистрация: 11.02.2010
Сообщений: 928
Бабло: $176835
По умолчанию

python
PHP код:
if __name__ == '__main__':
    
with open('baza.txt'encoding='utf-8') as fbl:
        
bls set(fbl)
    
with open('keys.txt'encoding='utf-8') as fw:
        
ws set(w.strip() for w in fw)
    for 
word in ws:
        
tup tuple(for s in bls if word in s)
        if 
tup:
            
with open(word '.txt'"w"encoding='utf-8') as fres:
                print(*
tupsep=''end=''file=fres)
    print(
"ok"
inkubus вне форума  
Старый 17.04.2013, 23:39   #7
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

for i in `cat keys.txt`; do grep $i baza.txt > $i.txt; done

__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser

Последний раз редактировалось chesser; 17.04.2013 в 23:45.
chesser вне форума  
Старый 17.04.2013, 23:47   #8
creator123
Senior Member
 
Аватар для creator123
 
Регистрация: 05.01.2008
Сообщений: 1,676
Бабло: $213930
По умолчанию

Offtopic
creator123 вне форума  
Старый 18.04.2013, 00:46   #9
masolit
Senior Member
 
Регистрация: 18.08.2007
Сообщений: 1,098
Бабло: $199375
По умолчанию

Цитата:
Сообщение от inkubus Посмотреть сообщение
python
PHP код:
if __name__ == '__main__':
    
with open('baza.txt'encoding='utf-8') as fbl:
        
bls set(fbl)
    
with open('keys.txt'encoding='utf-8') as fw:
        
ws set(w.strip() for w in fw)
    for 
word in ws:
        
tup tuple(for s in bls if word in s)
        if 
tup:
            
with open(word '.txt'"w"encoding='utf-8') as fres:
                print(*
tupsep=''end=''file=fres)
    print(
"ok"
феерический пиздос, сильный быдлокод
masolit вне форума  
Старый 18.04.2013, 21:04   #10
Weil
Senior Member
 
Регистрация: 30.06.2007
Сообщений: 107
Бабло: $44000
ТС -->
автор темы ТС По умолчанию

PHP код:
<?php 
set_time_limit
(0); 

$f1 fopen("baza.txt""r"); 
$f2 fopen("keys.txt""r"); 
while (!
feof($f2)) { 
  
$key trim(fgets($f2)); 
  while (!
feof($f1)) { 
    
$w trim(fgets($f1)); 
    if(
stripos($w,$key) !== false){ 
      
file_put_contents ($key.'txt'$w.PHP_EOLFILE_APPEND LOCK_EX); 
    } 
  } 

fclose($f1); 
fclose($f2); 

echo 
'done';
?>
Не работает Делает выборку только по первому кею из keys.txt, называет файл key1txt вместо key1.txt и пишет done.
Weil вне форума