Strona 1 z 1
[MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 08:45
autor: STAS
Jest to mój pierwszy post, więc na wstępie chcę wszystkich przywitać.
A teraz do rzeczy.
Mam taki problem. Przejąłem stanowiska pomiarowe, które przez ODBC przesyłają dane do MySQLowej bazy danych i zapisują je. Przez kilka miesięcy uzbierała mi się tabela wyników zajmująca około 3,5 miliona wierszy. Teraz chcę zrobić oddzielną aplikację, która otworzy tą tabelę i wyniki przetworzy. Ale jest problem, ponieważ nawet przy malutkiej tablicy zawierającej jakieś 500 tysięcy wyników LabVIEW się wysypuje. Po prostu się zamyka, tak samo jest po zrobieniu exe-ka.
O taki prościutki schemacik:

Może ktoś mi podpowiedzieć, jak otworzyć tą tabelę? Dodam że aplikacja, która mi popełniła te wyniki jest zrobiona w LabView z wykorzystaniem GOOP.
Re: [MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 09:13
autor: STAS
aha!! LV 8.5
przy 100 tys. wierszy działa :evil:
[MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 10:29
autor: Mikrobi
Zatem może jednak słać kolejne paczki po 100.000 wierszy :?:
Jeśli to tablica 1D to mozna przekształcić taką tablice na 2D z jednym wymiarem ustawionym na 100.000
Gdy LabVIEW ma problemy w obrębie środowiska zasadniczo wyrzuca błąd przez klaster błędu. Zapnij probe na przewodzie zaraz za funkcją.
Jesli jest błąd na styku LabVIEW-MySQL - to może byc jego źródlem funkcja przenosząca z LabVIEW do MySQLa : dostaje za duzy pakiet i nie potrafi go obsłużyć - to może byc błąd który zamyka środowisko.
Re: [MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 10:44
autor: STAS
Tak właśnie jest! To komunikacja z bazą danych sprawia problem.
A ja nie mogę z nią nic zrobić, nawet podzielić na kawałki. Potrzebne mi są dane tylko z 2-4 tygodnie wstecz, a to już się łapie spokojnie w 100.000.
Ale jak to zrobić?
Jeżeli odepnę połączenie DATA, też się wysypuje.
Zauważ, że ja próbuję podejrzeć tylko jeden wiersz i to też nie działa.
Kluczem może być to, jak zrobić żeby nie otwierał mi całej tablicy, tylko ostatnie x wierszy?
:help:
Re: [MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 12:25
autor: STAS
a przy okazji zapytam, bo też nie wiem. Jak wyciągnąć informację o rozmiarach tabeli?
[MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 12:57
autor: Ender
Rozmiar tabeli otrzymujesz za pomocą bloczka Array Size. Przyznam że nie bawiłem się bazami danych, ale bloczek DB Tools Select Data posiada wejście optional clause. Z opisu w help wynika, że służy ono do filtrowania danych pobieranych z bazy. Spróbuj wprowadź tam warunek że chcesz pobierać wiersze o numerach większych niż np 3,4 miliona.
Re: [MySQL + ODBC] obróbka dużej tabeli wyników
: 19 lis 2008 14:24
autor: STAS
Bingo!!
Faktycznie "optional clause" zadziałało.
Jest to opcja umożliwiająca dopisanie kodu MySQL. Wpisując tam stringa "WHERE [...]" możemy sortować tabele i wtedy wyświetla tylko to co posortujemy. Ja zastosowałem sortowanie wg daty, bo to mi jest potrzebne.
Kod MySQL wygląda następująco:
mysql> select * from [nazwa_tabeli]
i to co powyżej, zawiera bloczek DB Tools Select Data.
Mamy możliwość dopisania dalszej części tego kodu.
I tak dopisujemy:
WHERE YEAR(nazwa_kolumny)='xxxx' AND MONTH(nazwa_kolumny)='xx' AND DAYOFMONTH(nazwa_kolumny)='xx'
Takiego stringa dajemy na optional clause i mamy sortowanie po dacie.
Jeżeli chodzi o liczenie ilości wierszy, jest to bardziej skomplikowane bo dane z bazy wychodzą jako Variant.
Trzeba przepuścić to przez "Variant to Data" i nadając odpowiedni typ danej (2D array of string) można zastosować bloczek "Array Size".
W ten sposób otrzymujemy macierz 1D z ilością kolumn oraz wierszy.
Dzięki za pomoc!