» Poradna » Programy

Data do MySQL ze souboru

 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Ahoj lidi.Mám problém se svojí meteostanicí, ze které jsem získával data pomocí skriptu v pythonu (wws2mysql), ale nějak se mi to rozbilo a nemám schopnosti na spravení.Skript jsem zvládl upravit tak, že místo MySQL uloží ta data alespoň do souboru.Soubor má tuto strukturu:{0: {'abs_pressure': 966.3, 'delay': 5, 'hum_in': 42, 'hum_out': 91, 'idz': datetime.datetime(2020, 1, 8, 18, 23, 59), 'ptr': 4896, 'rain': 188.7, 'status': 0, 'temp_in': 20.1, 'temp_out': 2.6, 'wind_ave': 0.7, 'wind_dir': 6, 'wind_gust': 1.0}, 1: {'abs_pressure': 966.3, 'delay': 5, 'hum_in': 41, 'hum_out': 91, 'idz': datetime.datetime(2020, 1, 8, 18, 18, 59), 'ptr': 4880, 'rain': 188.7, 'status': 0, 'temp_in': 20.1, 'temp_out': 2.6, 'wind_ave': 0.3, 'wind_dir': 4, 'wind_gust': 1.0},3: {'abs_pressure': 967.5, 'delay': 5, 'hum_in': 50, 'hum_out': 81, 'idz': datetime.datetime(2019, 12, 23, 19, 28, 59), 'ptr': 4928, 'rain': 178.5, 'status': 0, 'temp_in': 20.8, 'temp_out': 4.800000000000001, 'wind_ave': 1.4000000000000001, 'wind_dir': 14, 'wind_gust': 2.0}}A teď zásadní otázka: Jak to rozumně dostat do MySQL?Zkoušel Ukázat celý příspěvek

Odpovědi na otázku

 |   |  Microsoft Windows 10 Firefox 72.0

Zaveď si počitadélko v PHP.Můžeš se chytit toho, že každý záznam má stejný počet řádků.Dále každý načtený řádek - jako řetězec, si můžeš dále konkretizovat a upravovat,co z něj uložíš do DB.Možná to zní složitě, ale není to nic těžkého.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Ten format je standardni JSON, takze chvilka googleni pro "JSON to MySQL" by to mela spravit. Pokud ne, tak ten soubor vystav a ja ti z toho udelam sekvenci SQL prikazu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Děkuji za odpověď.Tak jsem škádlil strýčka gugla a nic rozumného nebo mnou pochopitelného jsem nenašel.Jestli mě teda přímo na něco nasměruješ?Nebo jestli se ti chce, tak kousek souboru je zde: https://www.pastiebin.com/5e16c98a135f7Nedělám si úplně iluze, že bych to podle nějakého návodu pochopil Ale třeba se mi to podaří pochopit alespoń zpětně.Díky!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Docela by se k tomu hodila struktura databáze - tabulky, sloupce a datové typy. Já osobně bych se celkem rád podíval i na ten Python kód. Může to být nějaká rychle opravitelná drobnost.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Díky za zájem.Jedná se o tenhle projekt: https://github.com/x4x/pywws2mysql/tree/mast... Je tam popsaná i struktura databáze, ale momentálně pro to načtení jsem si udělal svojí, kde jsem prozatím všem sloupcům nastavil varchar.Jenom abych viděl, jestli a co se mi tam načte.Popíšu problém od začátku:Mám meteostanici WH-1080, která se umí připojit přes USB k PC a nahrát do něj data. Mám to připojené k raspberry na linuxu debian (armbian) a několik let to fungovalo.Stanice občas naměří nesmyslné hodnoty, ale vždy se to podařilo importovat do databáze a já jsem si to následně ošetřil vymazáním nesmyslů přímo z databáze.Před pár dny ten import lehne s hlášením "Insert Error! Dataset probably already existing!". Je to řádek v souboru db_interface.py, kde je to v sekci# test if keys in table try: self.cursor.execute( sql_insert % ( table, ', '.join(insert_dict.keys()), str(insert_dict.values())[1:-1] ) ) except: raise NameError("Insert Error! Dataset probably already existing!")Když tohle vyhodím, import ze stanice proběhne do souboru a ten se teď snažím zpracovat.Vím, že by bylo asi jednodušší opravit chybu v tom pythonu, ale tam jsem úplně mimo, tak jsem si říkal, že to zkusím na úrovni php/MySQL, kde se alespoň trošku chytám, ale zjevně i tam je to nad moje síly

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Teď půjdu programovat pro svého chlebodárce, ale jestli mě někdo nepředběhne, později se na to podívám. Kdybys někam nasdílel celý ten zdrojový soubor, bylo by to ještě nepatrně lehčí k následnému otestování. Jinak pokud máš chuť to řešit sám na úrovni PHP, tak si načti soubor do proměnné a následně využij json_decode a foreach cyklus pro zpracování po jednotlivých záznamech. V cyklu můžeš přímo využít podmínky s intervaly hodnot, při jejichž nesplnění bude záznam vyloučen jako neplatný a do databáze se vůbec neuloží.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Klidně pracuj Já se v tom patlám už asi týden a výsledek relativně 0, takže klidně počkám.Chtěl bych to samozřejmě udělat co nejčistší.Je to tak, že přes cron pouštím co 5 min načtení ze stanice, tak bych tam rovnou do toho skriptu přidal i něco pro načtení souboru do mysql a jeho případnou úpravu.To php by bylo takové zvláštní, ale nakonec budu rád za jakékoliv rady...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Mea culpa - vypada to jako JSON, ale neni to JSON :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

Je to JSON, len JSON neberie jednoduche uvodzovky ' ale ".

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

$content = file_get_contents('.../path/to/file');$fixedJson = str_replace("'", '"', $content);$json = json_decode($fixedJson);if (json_last_error()) {throw new Exception(json_last_error_msg());}foreach($json as $row) { var_dump($row); // mal by ti vratit object s danymi attributmi// sprav si insert na mysql}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Jdu to testnout a dám vědět!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

Ja som to napisal na rychlo z hlavy, teraz som sa zobudil :D. Hlavne ide o to pred dekodovanim jsonu zmenit jednoduche uvodzovky za klasicke "potom to skus hodit napr. jsonlint a zvalidovat malo by to byt ok :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Jeste mu vysvetli, jak ten JSON parser v PHP zvladne parsovat "datetime.date("

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

taky problem to zas nebude, odstrani si datetime.date a spravi ztoho klasicky string. Ocividne to je format Y, m, d, H, i, s co uz problem potom nebude. Ale teraz riesime aby to vobec vedel precitat :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Ja vim, ze to neni problem. Jenom se snazim rict, ze tohle JSON parser proste neskousne ani kdyz nahradis apostrofy za uvozovky... Jenom takove pratelske stouchnuti :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Tak mám něco špatně nebo mi něco nejde jak má:PHP Fatal error: Uncaught Exception: Syntax error in /var/www/html/aaa/index.php:6\nStack trace:\n#0 {main}\n thrown in /var/www/html/aaa/index.php on line 6Udělal jsem to jenom takhle:<?php$content = file_get_contents('/var/www/html/aaa/test.txt');$fixedJson = str_replace("'", '"', $content);$json = json_decode($fixedJson);if (json_last_error()) {throw new Exception(json_last_error_msg());}foreach($json as $row) {var_dump($row); // mal by ti vratit object s danymi attributmi// sprav si insert na mysql}?>

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

throw new \Exception(json_last_error_msg()); resp. die(json_last_error_msg());

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Tak kdyby se někomu chtělo, větší soubor s daty je zde: http://www.uschovna.cz/zasilka/TRHN744XYZT28GXP-RJ6

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Bezva. Napsal jsem parser, ktery zpracovava tve 3 radky "ukazkovych" udaju a tenhle soubor je v uplne jinem fomatu :(Pro ukazku:INSERT INTO `wwsdb` (`abs_pressure`, `delay`, `hum_in`, `hum_out`, `idz`, `ptr`, `rain`, `status`, `temp_in`, `temp_out`, `wind_ave`, `wind_dir`, `wind_gust`) values (966.3, 5, 42, 91, '2020-01-08 18:23:59', 4896, 188.7, 0, 20.1, 2.6, 0.7, 6, 1.0});INSERT INTO `wwsdb` (`abs_pressure`, `delay`, `hum_in`, `hum_out`, `idz`, `ptr`, `rain`, `status`, `temp_in`, `temp_out`, `wind_ave`, `wind_dir`, `wind_gust`) values (966.3, 5, 41, 91, '2020-01-08 18:18:59', 4880, 188.7, 0, 20.1, 2.6, 0.3, 4, 1.0});INSERT INTO `wwsdb` (`abs_pressure`, `delay`, `hum_in`, `hum_out`, `idz`, `ptr`, `rain`, `status`, `temp_in`, `temp_out`, `wind_ave`, `wind_dir`, `wind_gust`) values (967.5, 5, 50, 81, '2019-12-23 19:28:59', 4928, 178.5, 0, 20.8, 4.800000000000001, 1.4000000000000001, 14, 2.0);

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Jak v jiném formátu?Už na to koukám. Já jsem nahrál blbej soubor. Omouvám se!http://www.uschovna.cz/zasilka/TR2DHITGKCJDD8ZZ-4XYTo by mělo být správně.Jak se zdá, tak mám megakritický den...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0
avatar
 | Microsoft Windows 10 Firefox 71.0

Hm, mam tam drobnou chybu. Jeste moment.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Zkus tohle, snad to bude ono.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Taky mam evidentne kriticky den :/https://www.uschovna.cz/zasilka/TR7MZ72MCI4UAWZ3-...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Díkes, ale spíš mi prozraď, jak jsi ten sql dotaz vyrobil?Přece ti nebudu posílat každých 5 min soubor k úpravě Jinak tam vidím ještě nějaké malinké nesrovnalosti.Na pár řádcích (třeba 534) vypadl sloupec wind_dir.Ale to je drobek!Směr větru stejně nesleduju. Jde mi jenom o teploty a vlhkost.Ale jinak stejně paráda!

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

http://dpaste.com/23FFFAXNejvic prace je bohuzel s parsovanim tech dat. Neni to JSON, ale vystup z Pythoniho prikazu pprint(). Takze je tam spousta blbnuti s nacitanim. Asi by se dal premluvit JSON parser aby to nacetl, ale tohle reseni "na kolene" je po ranu pred prvnim kafem proste rychlejsi :)Pak uz jen "python data2sql.py out.txt > in.sql"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Klobouček!!!Musím se přiznat, že by mě stejně zajímalo, proč to přestalo fungovat mrcha jedna...ale jdu otestit tohle řešení. A dám vědět, kde zase zaseknu To mi jde...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

Pokial je to tak ako pise pan hore, je lepsie pouzit ten python ako PHP :) tam by to trebalo viac ohybat napr. spominany datetime.date() by PHP nerozumel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Neboj, Python mu takhle taky nerozumi :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Macintosh OS X Chrome 79.0.3945.88

to ja neviem, nepracujem snim len ma fascinuje ze to teda vypluje takyto custom format :D a netusim co tomu rozumie

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Nic - neni to format pro strojove zpracovani, ale vystup "pretty print" - tj. aby se to uzivateli dobre cetlo (hodne se pouziva pro debugging).

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 71.0

Jo a ten sloupec "wind_dir" tam chybi proto, ze chybi i ve zdrojovych datech. Data si zasadne nevymyslim 533: {'abs_pressure': 36.0, 'delay': 40, 'hum_in': 128, 'hum_out': 180, 'idz': datetime.datetime(2020, 1, 6, 21, 25, 59), 'ptr': 61648, 'rain': 1382.7, 'status': 3840, 'temp_in': 3.7, 'temp_out': 0, 'wind_ave': 0, 'wind_gust': 1.0}, 534: {'abs_pressure': 10.0,

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Tak a já už ASI vím ,proč to padá...Protože ve zdroji jsou duplicitní záznamy z hlediska času, proto mi nejde import pomocí toho skriptu, ani teď po převedení do SQL příkazů.Myslíš, že by ses mohl podívat na to, jak to ošetřit? Možná by stačilo v tom původním skriptu odladit duplicitu a byl by klid...Bohužel tvorbu zdrojových dat neovlivním, to dělá ta stanice.Hlavně teda nevím, kde ten skript data bere, protože stanici jsem několikrát vymazal a stejně to odněkud načítá...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 72.0

Jak se jmenuje ten sloupec, ktery je potreba kontrolovat? Nemam ted cas to hledat sam.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

idzProstě datum a čas měření. Netuším, proč si ho ta stanice vyrobila duplicitně

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 72.0
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Jirko, bohužel mi to teď nadává: File "zpracuj.py", line 42, in <module> obsah = open(sys.argv[1])IndexError: list index out of range

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Ježiš nic!Já jsem vůl.Zapomeň, já tomu nedal název souboru!To je den tohleto!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Chyba na mé straně.Import se teď zadaří bez duplicit.No, teď zase budu muset vymyslet, aby to nelehlo, když už to jednou je v tom sqlku, ale to už snad nějak půjde i kdybych to měl prohnat přes php.To bude stroj. Pythonem z toho dostat data, pythonem je rozparsovat, phpkem rozřádkovat a mysql to vložit.Celé v bashi

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Ono by bylo jednodussi pracovat rovnou s temi zdrojovymi daty a Pythonem je vkladat rovnou do databaze, ale to uz by bylo o neco malo slozitejsi nez tahle ranni rozcvicka pred praci :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.88

Máš na stanici správný datum? pokud bude klíč datetime neměl by být problém pokud není chybný datum u stanice. Některé starší modely mívali omezení roku. Případně může být chyba v příjmu/dekodování radio hodin.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Stanice se řídí radiem, ale i jak jsi psal v příspěvku pod tím, tak já jsem jí vynuloval.Vyndal jsem baterky.Přes funkci stanice jsem vymazal paměť.Pomocí pythonového skriptu jsem vymazal paměť.A když spustím ten skript pywws2mysql, tak mi to stejně odněkud (netuším odkud) natáhne data asi za 14 dní zpátky a v nich jsou ty chyby.Skript pywws2mysql využívá pywws (https://pywws.readthedocs.io/en/latest/), tak možná jestli tam někdo vyčtete KAM si ta mrška ukládá nějakou cache nebo data ke zpracování a jak toto vymazat, třeba by to bylo řešením.Ale já to prostě nedávám

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.88

Problém vidím drobátko jinde, bylo by dobré postnout ten logovací soubor, problém může být bud v PYWWS nebo ve stanici, záznam v bufferu stanice se neoznačí jako přečtený a načítá se opakovaně. V logovacím souboru by to bylo vidět jako pokus o opakované uložení podle data a času. Otestovat by to šlo úpravou odpovídajícího záznamu co už je v DB (pozměnit tam čas) a jestli se to pak uloží a posune na další záznamy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Hele já tu stanici fakt mazal jak vzteklej.Dokonce, když to připojím na windowsí program, tak on mi stáhne fakt jenom třeba 4 záznamy po vymazání stanice.Ale ten pywws to ASI někde cachuje. Ale já nevím kde.Strašně rád bych z toho získal nějakej logovací soubor nebo zasáhl do té cache a smazal bych ty nevhodné duplicitní záznamy, ale nevím jak a kde.A v DB není nic. Myslel jsem prvně, že je chyba v tom, že se snaží nacpat do DB co už tam je. Tak jsem ji taky komplet smazal, je prázdná a havaruje to stejně.Tudíž si myslím, že je to tou duplicitou, což se potvrdilo teď po Jirkově super akci.Ale pro mě je prostě záhadou, kde se ta data berou.Je fakt, že přijít na tohle, tak to dost problémů vyřeší.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.88

měl bys tam mít soubor out.txt viz.:if( config.getboolean('file_output', 'output')): print "writing to file" write_to_file('out.txt', fixb, all_data)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Ano, ten mi vzniká a ten potom Jirkovo aparátem teď budu zpracovávat.Ale já vůbec netuším, kde se do něj berou data.Protože se domnívám, že v meteostanici nejsou.Tohle je ta zásadní otázka...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Co jsem tak koukal, tak ma vlastni SQLite3 databazi. Ale venoval jsem tomu jenom par sekund.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Kde kde kde? Kde leží? Já ji smažu a možná bude klid!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Resp. co má tu databázi?Pywws nebo ta "nadstavba" pywws2mysql?A stejně netuším, kde je. To smazání by fakt bylo asi nejjedodušší. Sakra.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0
avatar
 | Microsoft Windows 10 Firefox 68.0

A koukam, ze to ma primo nejaky skript, ktery ma za ukol prevadet data z jednoho formatu do druheho: https://github.com/jim-easterbrook/pywws/blo...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.88

Data by se měla brát z meteostanice, otázkou je synchronizace, která se nejspíš těmi tvými pokusy rozhodila.Reset stanice ti nemusí smazat buffer, pouze nastaví ukazatel záznamu, v tom ring bufferu na začátek, ale data tam zůstanou.Ring buffer => pamět dané velikosti = velikost záznamu x daný početKdyž ukazatel překročí ten počet záznamů tak se znuluje a pokračuje od začátku.Je možné, že se ti tohle nějak rozhodilo a program vyčítá data z jiné pozice než by měl.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Nechci se nějak omlouvat, ale já samozřejmě dělal pokusy až potom, co to přestalo fungovat.Neměl jsem důvod do toho sahat, když to fungovalo.No, já snad zkusím zničit ten linux a dám to z čisté vody....

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.88

ahoj, koukal jsem na to, ideální by bylo u té chyby vložení vyjet i tu vkládanou strukturu, zdroje chyby mohou být 2 bud Duplicita v ID nebo nějakém klíči (pokud jsi resetoval stanici znuloval jsi tím id měření, nebo též stanice může mít omezený rozsah a sama začít s ID odznovu), druhou chybou může být chyba ve struktuře dat. Obě by se dali odhalit v případě zobrazení toho slovníku Insertdict.key/value.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Tento soubor je špatný.Prosím pokud se tomu někdo bude věnovat, tak tento nepoužívejte!Díky a omlouvám se za matení.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 72.0

MySQL, umožňuje import dat z textového souboru typu delimited.Slouží k tomu příkaz mysqlimport, je to soubor typu exe, tedy mysqlimport.exe, který leží v adresáři bin, a tam jej také můžete spustit. Pochopitelně s uvedením cesty, jej lze spustit odkudkoliv. mysqlimport má řadu přepínačů. Co je nejdůležitější, posloupnost sloupců v importovaném textovém souboru musí být stejná, jako v tabulce a také musí být zachovány datové typy. Do textových polí tabulky lze vložit pochopitelně jakákoliv data.Pokud chcete vkládat data z textového souboru test.txt v tomto formátu:"1", "abcde", ..."2", "efghi", ......potom příkaz zní:....bin\mysqlimport -prl -fields-enclosed-by=" -fields-terminated-by=, název tabulky test.txtimplicitně se předpokládá, že řádky jsou ukončeny jiným znakem, nežli terminátorem (v příkladu čárka)pokud je použit jiný znak, tak musíte použít další parametr-fields-escaped-by=\r\nV uvedeném příkladě sestává tabulka ze dvou sloupců.Myslím, že se jedná o přímočaré a jednoduché řešení.Přepínačů je celá řada, viz odkaz.Doufám, že jsem vám pomohl.https://dev.mysql.com/doc/refman/5.5/en/mysqlim...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Myslim, ze tuhle fazi problemu jsme minuli nekdy dopoledne ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 72.0

Jenom jste to mohli lépe vysvětlit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Aha,takže místo toho, abyste tazateli doporučili upravit v pywws2mysql jeden řádek (re-raise vyjímky z MySQL, z kterého by bylo jasné, v čem je problém), tak celé dopoledne bastlíte nové skripty Proti gustu...Varianty jsou v zásadě dvě:Tazatel dokurvil strukturu DB (odstranil nějaký sloupec , dal index/unique na sloupec, který unikátní není...) nebo začala meteostanice posílat data, která už v DB jsou - sloupce ID nebo idz, které jsou unique.V případě 1) stačí smazat tabulku wwsdb a znovu ji vytvořit pomocí pywws2mysql/Create_mysql.sql, v případě 2) žádný bastl nepomůže.P.S.: Ten bastl myslím s nadsázkou. Skript pana Vejražky sice řádně neošetřuje vstupy, ale jinak je to vcelku OK.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Dekuju ti, nacelniku, ze ses me zastal!(vstupy osetruju v produkcnim kodu, ne v jednorazovem skriptu, ktery pisu jako drobne mentalni cviceni a pomoc bliznimu v nouzi)A zaroven si vyprosuju, aby mi nekdo v diskusi na webu vykal

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Tazatel zcela výjimečně nic nedokonil.Import přestal fungovat asi tak ve 3:00 ráno a to jsem se v tom fakt nevrtal, to zásadně spím A jak jsem psal výše, tak DB jsem vymazal, takže tam také problém není.Problém je (a je vidět v souboru out.txt, který je tu k dispozici), že tam jsou na vteřinu shodné záznamy.Jak se tam berou se mě neptej.Když se podíváš na ty záznamy ze stanice, tak tam občas jsou naměřené nesmysly.A zřejmě se tam nějak dodrbal i ten čas. Ale já nemůžu přijít na to, kde to smazat, jelikož jak jsem psal, tak stanici jsem vymazal.Každopádně děkuji Jirkovi za odvedenou práci, zítra ještě zkusím něco provést se systémem, zálohu DB mám, maximálně přijdu o pár dní měření.Ale samozřejmě by se mi víc líbilo přijít na příčinu problému... ale to by chtělo delší zkoumání a to tady po nikom nemůžu chtít.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 71.0

Koukám, že jste se tu celkem vyřádili. Klobouk dolů před Jirkou za aktivitu. Ten try-catch blok v originálním skriptu mi přijde divný. Myslím, že padne i na tom, když v datech nejsou všechny informace, což už tu během dne někde proběhlo.Python není úplně jazyk, kterým bych mluvil, ale když se na to podívám, tak na první pohled nevidím důvod při téhle exception zastavit aplikaci.Když nahradíšraise NameError("Insert Error! Dataset probably already existing!")zaprint("Insert Error! Dataset probably already existing!")passtak by mělo zpracování pokračovat bez vážnějších škod. Nějaký ten řádek se do DB možná jen nevloží. Vyzkoušej, nic za to nedáš a já budu případně vědět, zda jsem dobře nebo mimo

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 71.0

P.S. Hlavně ty dva nahrazující řádky odsaď na stejnou úroveň.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 72.0

to jsem chtěl navrhnout, případně může provést porovnání toho existujícího záznamu zda data odpovídají, každopádně tím, že to vyhodí chybu se nejspíš něco nedokončí v tom čtení dat takže se to pak na tom jednom záznamu ze stanice zacyklí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 72.0

případně kontrolu idz před insertem

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

A vítězem se stává.... chvilka napětí.... a je to pán M!Fakt stačilo upravit ten pythoní skript a je to v testovací DB!!!Takže vyhráváš zlatého bludišťáka! Nestihnu se teď podívat na to, co se vlastně naimportovalo, ale zítra na to juknu a dám echo. Víceméně pro zajímavost.Nechci tím nijak snižovat páně Jirkovou aktivitou a ochotou, ale tohle je fakt dobrý! Díííky!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 72.0

Jirka má plné zásluhy. Ještě v práci jsem přemýšlel nad regulárním výrazem pro parsování dat. Jenže než jsem přišel domů, bylo tu vše vyřešeno, tak jsem se s odstupem začal namísto toho hrabat v originálním skriptu. Prostě týmová spolupráce včetně testera

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 68.0

Diky, ale vyresit puvodni problem je samozrejme lepsi. Ja jsem mel vcera chut napsat si za par minut relativne jednoduchy parser a ne se hrabat v cizim kodu :)Mimochodem, poslali jste bug report nebo dokonce pull request? :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Komu jsme to měli poslat?Já to svým relativně laickým pohledem vidím na chybu v tom skriptu pywws2mysql.Autor udělal poslední změnu před 5 lety, na můj popis problému na GitHubu nereaguje, takže si myslím, že už se tím dávno nezabývá.A jsem asi jedinej, kdo to používá

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Když to máš těžké. Sestřelit při téhle výjimce celý skript je možná zbytečné, ale pywws2mysql je pořád jen konektor a ta chybná data asi vznikají někde na úrovni hardware -> datová sběrnice -> sw pywws. Na hlášení bugu do téhle knihovny to teda fakt není.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 79.0.3945.117

Já si dokonce myslím, že teď po vyčtení dat může ten kod vrátit do původního stavu a je šance že to poběží normálně, případně před insertem kontrolovat IDZ jestli už v DB není, ještě se dnes večer juknu na tu knihovnu podrobněji včera jsem prošel jen část,někde tam nějaká kontrola byla, ale jde o to jestli na správný údaj a zda to na ní reaguje správě.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Data nejsou vyčištěná.Ten pywwws nebo pywws2mysql je furt někde (asi v té své interní databázi) má uložené, protože i do té testovací (a teď už i v "produkční") databázi jsou záznamy asi za posledních 14 dnů.Úplně se mi s tím už nechce vexlovat - držím se hesla co funguje, do toho nešahej - ale myslím, že by to zase spadlo.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 72.0

co se týče nesmyslných záznamů, lze v některé té části před vkládáním do DB provést formální kontrolu dat zda jsou v rozsahu apod.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

No jo, ale to opět chtělo tu úpravu pythoního skriptu, který se o to stará.Ale zatím to vypadá, že stačila ta úprava ve stylu "nespadni"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 72.0

Ono se to bez té stanice špatně debuguje. Asi by to nebyla velká úprava, ale já osobně nerad odevzdávám kód, který neumím relevantně otestovat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 79.0.3945.88

Jirka odvedl skvělou práci a tímto mu ještě jednou děkuji, že byl ochoten se tomu věnovat a snažil se mi pomoci.Jeho řešení si nechám v záloze, kdyby to zase lehlo.Je mi jasné, že bez přístupu ke stanici se to blbě řeší, ale není problém ho poskytnout Nicméně zatím to funguje, data se importují. Mám mírný pocit, že jsem svými pokusy ten systém uvedl do divného stavu a je otázkou, zda se po restartu probere, ale vše si zazálohuji a případně uvedu do produkčního stavu Pánové, všem děkuji, pokud nikdo nemá zájem vylepšit fungování skriptu pywws2mysql tak, aby ošetřil víc chybových stavů, považoval bych toto téma za uzavřené.V opačném případě rád poskytnu přístupy na "server" se stanicí a můžete bádat. Jak jste zjistili, moje možnosti jsou v tomto směru poměrně chabé Všem ještě jednou díky!

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Delay, Zásadní otázka, Fields, Lines


Určitě si přečtěte

Podívejte se na Windows z roku 1990. Před 30 lety přišly Windows 3.0 a líbily se nám

Podívejte se na Windows z roku 1990. Před 30 lety přišly Windows 3.0 a líbily se nám

** 22. května 1990 uvedl Microsoft Windows 3.0 ** Systém z Microsoftu definitivně udělal lídra na desktopu ** Tehdejší Windows byly vlastně grafickou nadstavbou nad MS-DOS

Jakub Čížek | 75

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

** Po dvou měsících tu máme další linuxovou kopii ** Tentokrát jde o imitaci Desítek ** Sestavili ji brazilští geekové nad Ubuntu

Jakub Čížek | 135

Je lepší hrát na PC, či na konzolích? Nebo jsou i jiné možnosti?

Je lepší hrát na PC, či na konzolích? Nebo jsou i jiné možnosti?

** Jaké jsou výhody a nevýhody hraní na počítači? ** Co mají společného a v čem se liší Xbox One, PS4 a Switch? ** Na čem hrát, když nemáte výkonné PC ani konzoli?

Lukáš Václavík | 123

Windy je laboratoř na počasí: 12 tipů, jak se ve službě vyznat a využít ji naplno

Windy je laboratoř na počasí: 12 tipů, jak se ve službě vyznat a využít ji naplno

** Předpověď počasí Windy nabízí nepřebernou škálu funkcí ** Zorientovat se v nich nemusí být vždy snadné ** Proto přinášíme 12 užitečných tipů a triků

Karel Kilián | 10

Jak odposlouchávat sousedy: Bizarní Lamphone a další netušené techniky

Jak odposlouchávat sousedy: Bizarní Lamphone a další netušené techniky

** Lamphone je další bizarní technika odposlechu ** Zneužívá obyčejnou stropní lampu ** Podívejte se na další bizarní experimenty

Jakub Čížek | 17

Zapomeňte na kometu, české nebe každý den křižují mnohem zajímavější kousky

Zapomeňte na kometu, české nebe každý den křižují mnohem zajímavější kousky

** České nebe každý den křižuje hromada exotických letounů ** Na populární mapě Flightradar24 je ale nenajdete ** Jsou to vojenské letouny USA, UK a NATO

Jakub Čížek | 37


Aktuální číslo časopisu Computer

Megatest: nejlepší notebooky do 20 000 Kč

Test 8 levných IP kamer

Jak vybrat bezdrátová sluchátka

Testujeme Android 11