Create Table - aktualizowanie

0

Cześć,

Chcę stworzyć procedurę, która będzie tworzyła tabelę ( kilka mln wierszy). Źródła(dla mojej tabeli) są akutalizowane kilka razy dziennie.
Scheduler i tworzenie codzienne tabeli będzie ok ? (Create or replace table ) . Jaki będzie optymalny wariant ?

0

Ale dlaczego chcesz tworzyc codziennie? Co to z dane?

0

To dane logistyczne, dogrywane w różnych okresach w ciągu dnia.
Moja tabela łączy kilka innych widoków, i służy jako podstawa do raportu.

2

No ale zmienia Ci się codziennie struktura, że chcesz nową tabelę robić? Wydaje mi się, że łatwiej będzie truncate table xxx i ponownym import danych niż drop table i create table

0

Nie, struktura się nie zmienia. Może głupie pytanie, ale w jaki sposób wtedy importować dane?
Create procedure
truncate table xxx
?

0

Nie podałeś jaka to baza więc ciężko tak z głowy ale przeważnie można to zrobić na tej zasadzie

insert into (xxx,yyy,zzz)
(select xxx, yyy, zzz from table)

Napisałeś źródła zewnętrzne więc np w oracle jest coś takiego jak external table i możesz np plik CSV potraktować jak tabelę. W PostgreSQL można użyć polecenia COPY, które może importować dane bezpośrednio z pliku do tabeli ... podaj konkrety to i konkretnie odpowiedzi udzielimy :)

0

Dzięki za odpowiedzi :)

Źródła z których tworzę swoją tabelę to widoki. A chcialełem taką procedurę wrzucić w taska (create or replace table) i co kilka godzin tworzyć jakby od nowa taka tabelę. Tworzy jakieś problemy wydajnościowe?
Nie wiem w sumie, bo by dało odkładnie tego do csv ?

0

Nie nie nie źle się zrozumieliśmy ... import danych z CSV do tabeli to miałem na myśli pisząc external table. Jak rozumiem masz widoki, z których dane chcesz zapisać do tabeli tak? No dla mnie osobiście dziwny pomysł bo raczej zrobiłbym widok z wieloma widokami połączonymi unionami wtedy tabela Ci nie potrzebna, a zawsze masz aktualne dane. No chyba, że czas odczytu tych widoków jest problematyczny i chcesz je cyklicznie odkładać lokalnie w tabeli aby raport się szybciej generował. Wtedy ok. Nie ma jednak sensu za każdym razem tworzyć tabeli. Lepiej zrobić raz tabelę, a następnie w procedurze zrobić truncate table następnie insert into (xxx) (select xxx from twjo_widok_lub_widoki) commit i tyle :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1