keboola / db-writer-snowflake

Snowflake database writer
MIT License
0 stars 1 forks source link

Truncate table + validate structure #51

Closed ErikZigo closed 3 years ago

ErikZigo commented 5 years ago

POC pro https://github.com/keboola/db-writer-snowflake/issues/49

Validace

Metoda Writer\Snowflake::validateTable() pro validaci mappingu oproti existujici tabulce v DB

Porovnava:

Funguje to tak, ze zavolam query DESC TABLE a vysledek prevedu na pole obsahujici Snowflake\DataType\Definition (rozsiruje https://github.com/keboola/php-datatypes).

Abych to mohl porovnavat s mappingem, tak jsem pridal par metod:

Upravy

ErikZigo commented 5 years ago

Vsechny veci jsem se snazil pokryt testy

Halama commented 5 years ago

Když neprojde ta validace tak to hodí user error že? Jak to ale opravím když chci např. přidat nebo odebrat sloupec? Asi tomu chybí nějaká podpora pro akci která to vyřeší ne? tzn. i úprava UI a další featury.

Půjde to v pohodě nasadit aniž by to něco rozbilo? Koukám že tahle feature je teď jenom pro full load tak tam by u pravidelně loadovaných tabulek nemělo hrozit že se struktura bude lišit.

Halama commented 5 years ago

Myslíš si teda že je to takhle publikovatelný? Jestli něco nepřehlížím tak mi přijde že to není ready k nasazení. Tím pádem bych byl pro teď releasnout ten SWAP tabulek, to musí být za dvě hoďky max hotové.

MiroCillik commented 5 years ago

@ErikZigo v tejto issue (posledne 2 commenty) je navrh ako to spravit s tym updatom. https://github.com/keboola/db-writer-common/issues/7

ErikZigo commented 5 years ago

Jakej swap?

Halama commented 5 years ago

ALTER TABLE [ IF EXISTS ] <name> SWAP WITH <target_table_name> https://docs.snowflake.net/manuals/sql-reference/sql/alter-table.html

Halama commented 5 years ago

Jak jsem se v tom vrtal tak jsem to rovnou spíchnul https://github.com/keboola/db-writer-snowflake/pull/55 Jedou nad tím testy, pak to bude chtít případně začistit.

MiroCillik commented 5 years ago

Co teda s tymto @ErikZigo?

ErikZigo commented 5 years ago

@MiroCillik nevim, napada me dodelat:

Fungovalo by to tak, ze by ti failnul writer a ty bys mohl v UI udelat: 1) kliknout na tlacitko smaz tabulku v cilove DB 2) kliknout na tlactiko sesynchronizuj tuhle tabulku To by zalozilo novy job ktery by udelal alter ty cilovy tabulky + do ni nahral data

michaljurecko commented 3 years ago