NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michal Kowalski:23.5.2017 11:17

Zdravím, nezná někdo prosím v Postgresu/PostGISu příkaz, který by aktualizoval tabulku, aniž by se celá vymazala a napsala znovu? Jelikož budu updatovat poměrně velká data, bylo by dobré, aby se porovnával záznam se záznamem.
Tím myslím, že když v tabulce v databázi bude:
A, B, D, F
a data, která chci do databáze nahrát budou mít: A, C, D
tak v databázi se to aktualizuje na A, C, D

Díky moc! :-)

 
Odpovědět
23.5.2017 11:17
Avatar
Paul
Člen
Avatar
Odpovídá na Michal Kowalski
Paul:26.5.2017 8:02

Zkus to trochu více popsat. Píšeš, že se má porovnávat záznam se záznamem. Záznamy, které se zjoinujou tak mají zůstat zachovány v tabulce a záznamy, které se nezjoinujou mají být vymazány?

Editováno 26.5.2017 8:02
 
Nahoru Odpovědět
26.5.2017 8:02
Avatar
Michal Kowalski:26.5.2017 9:27

Myslel jsem to tak, že se celá tabulka přepíše novými daty, avšak postupně:

  • když mám na vstupu data, která nejsou v tabulce, tabulka se doplní o tuto položku
  • když mám na vstupu záznam, který je v tabulce, záznam je do tabulky přidán
  • když během operace s více záznamy se ukáže, že v tabulce jsou data, která nejsou na vstupu, tato data se z tabulky odstraní
 
Nahoru Odpovědět
26.5.2017 9:27
Avatar
Paul
Člen
Avatar
Odpovídá na Michal Kowalski
Paul:29.5.2017 8:39

Body 1 a 3 jsou jasné.
Bod 2: Budeš přidávat záznam, který už tam jednou máš, vznikne ti tedy duplicitní, je to tak?

 
Nahoru Odpovědět
29.5.2017 8:39
Avatar
Odpovídá na Michal Kowalski
Neaktivní uživatel:29.5.2017 10:00

Chápu to tedy tak, že původní data z tabulky zahodíš a nahradíš novými, ano? Takto mi to vychází z těch tvých pravidel. Ty se ptáš, jak to udělat, aby to bylo co nejrychlejší, protože ti je líto mazat záznamy, které tam už jsou a které bys znovu nahrál. Chápu to správně?

Nahoru Odpovědět
29.5.2017 10:00
Neaktivní uživatelský účet
Avatar
Paul
Člen
Avatar
Odpovídá na Michal Kowalski
Paul:1.6.2017 13:32

Pokud je to tak, jak píše Fredep, tak je nejlepší cesta smazat celou tabulku a nahrát znovu. Je to běžná praxe.
Místo delete použij příkaz truncate, který se nezabývá logováním a je tím pádem znatelně rychlejší.
Tím, že bys porovnával nová data s těmi, která už v tabulce máš bys zbytečně zatěžoval DB.

Editováno 1.6.2017 13:33
 
Nahoru Odpovědět
1.6.2017 13:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.