![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 23.07.2005 Ostrzeżenie: (0%)
|
Witam
Mam problem jak ustawić typ kolumny żeby prawidłowo został zaimportowany plik textowy, gdzie są zawarte liczby zmiennoprzecinkowe (z przecinkiem). Gdy ustawiam kolumnę na np. decimal (dł. jedno miejsce po przecinku) to zamiast dziesiętnej mam po kropce 0. Gdy ustawiam kolumnę na tekst import jest prawidłowy, czyli cała liczba i po przecinku dziesietną. Druga opcja nie za bardzo mi odpowiada do dalszych działań matemat. typu sortowanie, np jak jest 999,4 i 1001,5 to po sortowniu twierdzi że pierwsza jest większa od drugiej, bo z 1001,5 tak jakby przesuwał przecinek i wychodzi 1,001.5 Chyba że jest jakis sposób na traktowanie liczby z kolumny text jako liczby zmienoprzcinkowe? pozdr. elj |
|
|
|
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Zle sortuje poniewaz sortuje po polu tekstowym, zrob konwersje.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%)
|
rozwiazan w Twoim przypadku (w zaleznosci od tego jak dokladnie wyglada plik, z ktorego importujesz dane)
przykladowe rozwiazanie jest nastepujace jezeli przecinek w Twoim pliku wystepuje tylko jeden raz (do oddzielenia wartosci dziesietnych) mozesz zrobic to w nastepujace sposob 1) wykorzystac narzedzie dostarczane wraz z systemem zarzadzania baza danych o nazwie replace (znajduje sie w katalogu bin) i zamienic kropke na przecinek i strumien wyjsciowy przekierowac do drugiego pliku Kod replace "," "." < c:\dane.txt > c:\dane2.txt 2) nastepnie majac tak przygotowane dane mozesz bez problemu importowac do bazy danych Kod mysql -u root -e "LOAD DATA INFILE 'c:\dane2.txt' INTO TABLE test.import FIELDS TERMINATED BY ';'" #) przykladowy plik zrodlowy jest nastepujacy Kod 1;1,2343 2;112,123213 3;1212,23 4;123121,123 inne rozwiazanie to napisanie skryptu ktory pobierza zawartosc pliku a nastepnie doda do tabeli odpowiednie wartosci napisz jak duzy masz ten plik, podaj kilka przykladowych wierszy - wowczas cos wiecej bede mogl doradzic i napisac |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 23.07.2005 Ostrzeżenie: (0%)
|
Mój plik
Kod Data i czas Nr seryjny T1 T2 RH1 RH2 P1 P2 2003.09.01 13:46:00 75 ---- ---- ---- ---- 999,3 999,3 2003.09.01 14:13:00 75 ---- ---- ---- ---- 999,5 999,5 2003.09.01 14:43:00 75 ---- ---- ---- ---- 999,2 999,2 ............ Kod 2003.11.29 20:54:00 75 ---- ---- ---- ---- 1005,9 1005,9 2003.11.29 21:24:00 75 ---- ---- ---- ---- 1005,9 1005,9 dane są zapisywane z zewnetrznego programu co pół godziny, a więc jest spory, co miesiąc plik jest urywany i tak od początku... Czy mozna (jak) przy imporcie zrobić konwersję z przecinka na kropkę? Może tak będą prawidłowo zapisywane dane. Jeszcze jedno: w drugim pliku Kod Data i czas Nr seryjny T1 T2 RH1 RH2 P1 P2 2003.09.01 13:45:00 1116 20,5 20,5 64,1 64,1 ---- ---- 2003.09.01 14:12:00 1116 20,5 20,5 63,7 63,7 ---- ---- dla pola text operacje matematyczne są wykonywane prawidłowo (?) a dla pierwszego pliku gdy przekraczmy 1000,0 (magiczna liczba) to już traktuje to jako 1 ((IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?). pozdro. |
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 13:26 |