The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Выборка из двух таблиц, не их базы"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Выборка из двух таблиц, не их базы"  
Сообщение от ajk (ok) on 30-Сен-06, 20:33 
Есть два структурированных как таблицы файла, один достаточно большой.
Одно поле у них совпадает.
Как выбрать строки в которых эти поля совпадают?
Вообще, в большой таблице нужно поле "связки" заменить на имя "ключа" из маленькой таблица. А уж отобрать записи которые нужны не проблема

На sql это 5 строк, но в базу со своими таблицами я влезть не могу, потому нужно сделать на шелле. Очень не хочется это делать потом, типа, на Аксессе

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Выборка из двух таблиц, не их базы"  
Сообщение от Асен Тотин email on 30-Сен-06, 21:19 
Привет,

Если Perl устраивает, можно сделать так:

1. Читаем маленький файл, делаем в памяти hash из значении "ключ" - "стоимость".
2. Перебираем весь большой файл строка за строкой, делаем split каждой страки по delimiter-у (табулятор, запятая или то, что там у вас) в массив, заменяем N-ный элемент масива стоимостью того элемента hash-а, у которого ключ - сам N-ный элемент массива.

Строк будет не 5, но врад ли более 10-и :-)

WWell,

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Выборка из двух таблиц, не их базы"  
Сообщение от ajk (ok) on 01-Окт-06, 20:35 
>Привет,
>
>Если Perl устраивает, можно сделать так:
>
>1. Читаем маленький файл, делаем в памяти hash из значении "ключ" -
>"стоимость".
>2. Перебираем весь большой файл строка за строкой, делаем split каждой страки
>по delimiter-у (табулятор, запятая или то, что там у вас) в
>массив, заменяем N-ный элемент масива стоимостью того элемента hash-а, у которого
>ключ - сам N-ный элемент массива.
>
>Строк будет не 5, но врад ли более 10-и :-)
>
>WWell,
Дайте строчку про hash
Я не знаю перла, но немного видел, пойму.

Я бы это на php сделал, но его там нет. Все права обрезали, блин, уроды. И, ладно бы,  оправдано...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Выборка из двух таблиц, не их базы"  
Сообщение от Асен Тотин email on 01-Окт-06, 22:36 
Привет,

"man perlfunc" везде, где непонятен синтаксис.

Что-то вроде:

---

#!/usr/bin/perl

open (SMALL_FILE, "small_file.txt") || die "Failed to open SMALL_FILE";
while (!eof(SMALL_FILE)) {
$line = <SMALL_FILE>;
chomp $line;
($key, $hash{$key}) = split(/\ /,$line);
}
close SMALL_FILE;

open (BIG_FILE, "big_file.txt") || die "Failed to open BIG_FILE";
while (!eof(BIG_FILE)) {
$line = <BIG_FILE>;
@line_parts = split(/\ /,$line);
$line_parts[1] = $hash{$line_parts[1];}
for ($i=0; $i<@line_parts; $i++) {print $line_parts[$i];}
print "\n";
}
close BIG_FILE;

---

WWell,

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Выборка из двух таблиц, не их базы"  
Сообщение от madskull (ok) on 16-Окт-06, 15:45 
>Есть два структурированных как таблицы файла, один достаточно большой.
>Одно поле у них совпадает.
>Как выбрать строки в которых эти поля совпадают?
>Вообще, в большой таблице нужно поле "связки" заменить на имя "ключа" из
>маленькой таблица. А уж отобрать записи которые нужны не проблема
>
>На sql это 5 строк, но в базу со своими таблицами я
>влезть не могу, потому нужно сделать на шелле. Очень не хочется
>это делать потом, типа, на Аксессе

подозреваю, что man join поможет

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру