PostgreSQL

poruka: 15
|
čitano: 10.576
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
offline
PostgreSQL zadatak
pozz, ima li netko da zna kako rijesiti ovaj zadatak.
Moj PC  
0 0 hvala 0
15 godina
offline
Re: PostgreSQL zadatak

-ako te to zanima, ako učiš.. tad si urpavo ti taj koji to treba riješiti.

btw, SQL .. je sql, nevažno postgre odnosno velike baze mogu imati svoje fičere-razlike, no jezik je isti.. kao što auto može imati 4-5-6-više brzina, 'isto je'.

evo ti ''ugrubo'' hint :))

select * from * where * on .. e to je join.. tj kriterij i što s čime spajaš, dodaješ, tražiš samo što je u obje tablice-kriterija ili je kriterij prva-druga itd.. ako to ne znaš, tad si zalutao.

 

+ prijedlog, za učenje, isprobavanje.. mislim/možda je najzgodnije win, ms-office-access baza, za učenje sql-a, ogroman knowhow-msdn baza s primjerima, server, VisualStudio za c-java-bilošto.. i tad ne moraš više tražiti jer tad imaš sve moguće primjere, klikaš-vidiš.. dok je samo stvar sintaxe-prilagodbe nekoj konkretnoj bazi-platformi ili programskom jeziku, npr connect string, nakon čega je 99% identično. Oracle, IBM.. ili postgree, sam skjuel ili platforma-alati, kad to svladaš-vidiš, tad počneš na 'pravilan' način razmišljati o relacijskim bazama i upitima, tad počneš razumijevati i tad znaš..

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
Poruka je uređivana zadnji put pon 3.6.2019 16:44 (ihush).
8 godina
offline
PostgreSQL
Znam, ali me zanimao bas konkretno ovaj primjer posto se treba raditi u programakom jeziku a dosad sam samo radio direktno u sqlu pa me zbilja zanima kako da ovo napravim
Moj PC  
0 0 hvala 0
15 godina
offline
Re: PostgreSQL

nije važno u kojem programskom jeziku, sve je to sql .. sintaxa uz sitne varijacije dok connectstring ovisi o samoj bazi npr ms-access-mdb ili ibm-db itd..

ako znaš sql znaš ga na svim platformama, odnosno, samo provjeriš-pogledaš primjer kako se nešto u nekom konkretnom jeziku napravi, npr c-c#-python-java-neštodeseto.. ili visualbasic/bilo što iz VSa ili bilo koja platforma uz razlike koje mogu zezati kao npr UNC path i tri ili dva beksleša.. npr win-lin...

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
8 godina
offline
PostgreSQL
A dali je za ovaj zadatak potrebna konekcija sa postgres serverom? I sto tocno se misli ovom recenicom: All three operators should implement the open(), next(), close() iterator model.
Moj PC  
0 0 hvala 0
15 godina
offline
Re: PostgreSQL

operator.. terminologiju moraš usvojiti, tad ti postanu jasne takve rečenice, ponekad je to najteži dio..

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
8 godina
offline
PostgreSQL
Okej
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
PostgreSQL

Ovi operatori open(), next() i close() se koriste za manipuliranje datasetom u programskom jeziku po izboru, a ne SQL-u, dok u SQL-u imaš samo upit. Znači, odaberi nešto što ti odgovara (Python, PHP ili što već imaš ponuđeno). Vidi primjer korištenja na https://www.datacamp.com/community/tutorials/tutorial-postgresql-python

 

Što se tiče komentara da SQL je SQL mogu se složiti sa time ako se kaže ANSI-SQL je SQL, no različite "ekstenzije" SQL (PL/SQL na Oracle, T-SQL na MS) donose dodatne mogućnosti koje nisu dio ANSI standarda. Štoviše, već između PostgreSQL i MySQL postoji cijeli niz statementa koji su međusobno nekompatiblini. ANSI SQL je osnova, ali ako želiš koristiti to efikasno na nekoj platformi korisno je iskoristiti sve mogućnosti.

The best is yet to come, and wont that be fine You think youve seen the sun, but you aint seen it shine
Moj PC  
1 0 hvala 1
8 godina
offline
PostgreSQL
Hvala ti puno, probat cu koristiti ovaj tutorial pa rijesiti ovo.
Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: PostgreSQL zadatak

Ne mogu ništa naći o tom open/next/close iterator modelu pa zbog jednostavnosti koristim Pythonove generatore:

 

from collections import defaultdict, namedtuple

Tuple = namedtuple('Tuple', ['ID', 'attributes'])

def table_scan(collection):
    for item in collection:
        yield item

def nested_loop(left_collection, right_collection):
    for left in left_collection:
        for right in right_collection:
            if left.ID == right.ID:
                yield Tuple(left.ID, left.attributes + right.attributes)

def hash_join(left_collection, right_collection):
    hash_table = defaultdict(list)
    for left in left_collection:
        hash_table[left.ID].append(left)

    for right in right_collection:
        for left in hash_table[right.ID]:
            yield Tuple(left.ID, left.attributes + right.attributes)

 

Primjeri korištenja:

table_1 = (Tuple(1, ['a', 'A']), Tuple(2, ['b', 'B']), Tuple(2, ['c', 'C']), Tuple(3, ['d', 'D']))
table_2 = (Tuple(1, ['x']), Tuple(2, ['y']), Tuple(4, ['z']))

for row in table_scan(table_1):
    print(row)
# Tuple(ID=1, attributes=['a', 'A'])
# Tuple(ID=2, attributes=['b', 'B'])
# Tuple(ID=2, attributes=['c', 'C'])
# Tuple(ID=3, attributes=['d', 'D'])

for row in nested_loop(table_1, table_2):
    print(row)
# Tuple(ID=1, attributes=['a', 'A', 'x'])
# Tuple(ID=2, attributes=['b', 'B', 'y'])
# Tuple(ID=2, attributes=['c', 'C', 'y'])

for row in hash_join(table_1, table_2):
    print(row)
# Tuple(ID=1, attributes=['a', 'A', 'x'])
# Tuple(ID=2, attributes=['b', 'B', 'y'])
# Tuple(ID=2, attributes=['c', 'C', 'y'])

 

8 godina
offline
PostgreSQL
Hvala ti care
Moj PC  
0 0 hvala 0
6 godina
offline
PostgreSQL

Da ne otvaram novu temu, Imam neke podatke, njih dosta ugrubo napisani u .txt fajlu (oko 650k linija).

 

Njih obradim s pythonom, line by line i zelim ih zapisati u bazu da pretraga podataka bude brza.

 

Sad imam ideju kako to sve izvest pa neka me neko ispravi ako grijesim.

 

Napravim postgresql bazu, spojim se na nju pythonom i samo appendam u bazu ono sto zelim ?

Sad cak i zvuci jednostavnije nego u mojoj glavi xD

Trust nobody, become the best !
Moj PC  
0 0 hvala 0
14 godina
offline
Re: PostgreSQL
Da to nije 650k korisnika A1? :P
6 godina
offline
Re: PostgreSQL

Ma da, sad gledam njih sve u bazu pa da filtriram ove korisnike foruma, da vas nebi tko dirao 

 

Testcase-ovi neki, ima ih i kurcu

Trust nobody, become the best !
11 godina
neaktivan
offline
Re: PostgreSQL

Za masovni unos možeš koristiti PostgreSQL naredbu copy

 

Npr. napraviš datoteku import.txt s ovim sadržajem (podaci su odvojeni tabom, nema praznog retka na kraju)

 

1   Pero   Perić
2   Eva   Ević
4   Ivo   Ivić

 

Za import pokreneš ovu SQL naredbu:

 

copy osoba(id, ime, prezime) from 'apsolutna_putanja_do_import.txt';

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice