![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 3.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Bawię się trochę i nie mam pomysłu jak poradzić sobie z tym. Załóżmy mamy taki plik .csv:
Dodatkowo zrobiłem sobie taką strukturę bazy danych:
Za cholerę nie wiem jak z pliku .csv wrzucać dane do bazy danych. Mógłby ktoś to na jakimś skrypcie przykładowo zaprezentować? Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 131 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mades kombinujesz jak koń pod górę. Memory podał ci najbardziej optymalne i elegancie rozwiązanie.
Zajrzyj tu znajdziesz przykłady http://dev.mysql.com/doc/refman/5.1/en/load-data.html łącznie z obróbką daty w formacie "2013-11-07 czw" ![]() A co do tego "foreacha" jeśli uprzesz się przy w.w rozwiązaniu to chyba jesteś w stanie dojść krok po kroku gdzie jest błąd... -------------------- Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore
I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 3.08.2013 Ostrzeżenie: (0%) ![]() ![]() |
Walić to, nie mam już sił do tego gówna. Zechciało się csv.
Już próbowałem zrobić to tak jak napisałeś wyżej, ale za cholerę nie chce wejść to do bazy danych. Sorry, ale pieprzę się z tym drugi dzień i już nie mam nerwów na to. Cytat "Data";"Nr lekcji";"Klasa";"Przedmiot";"Nauczyciel nieobecny";"Nauczyciel zastępujący";"Sala"; "2013-11-07 czw. -> 2013-11-08 pt.";"1 -> 9";"3G TE";"Język polski";"Skutnik Magdalena";"Skutnik Magdalena";""; "2013-11-15 pt. -> 2013-11-08 pt.";"1 -> 2";"4G TE";"Wiedza o kulturze";"Wołkowycka Katarzyna";"Wołkowycka Katarzyna";""; "2013-11-08 pt.";"1";"3D TE 3dt-2n";"Multimedia i grafika komputerowa";"Żelezniakowicz Michał";"zajęcia odwołane";""; "2013-11-08 pt. -> 2013-11-15 pt.";"2 -> 1";"4G TE";"Podstawy przedsiębiorczości";"Dąbrowski Maciej";"Dąbrowski Maciej";""; "2013-11-08 pt.";"2";"1B TE";"Podstawy elektrotechniki";"Matwiejczuk Jolanta";"Mieczkowski Piotr";""; "2013-11-08 pt.";"2";"3D TE 3dt-2n";"Multimedia i grafika komputerowa";"Żelezniakowicz Michał";"zajęcia odwołane";""; Nie chce to się upchać do bazy. Próbowałem jakoś tak, znając mnie to zrobiłem jakiś banalny błąd, którego nie widzę.
Ten post edytował Mades 22.11.2013, 09:39:16 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 587 Pomógł: 131 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bawisz się z tym już drugi dzień bo nie potrafiłeś poświęcić 30 min na próbę zrozumienia zapytania, które ci podsunięto!
-------------------- Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore
I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek |
|
|
-Gość- |
![]()
Post
#7
|
Goście ![]() |
Oj chyba troche mylicie koledze. Trzeba pamietac o tym gdzie w przypadku odpalania zapytania `LOAD DATA INFILE` ma leżeć plik csv, a to może nie koniecznie być takie proste jak zapytanie odpalamy z PHPa. Zapytanie podane w tej formie ktora jest wyzej, nie zadziala w wiekszosci wypadkow.
Najlepiej podać ścieżkę bezwzględną do pliku (czyli "C:/sciezka/do/pliku.csv" - domyslam sie ze dzialasz na windowsie) i wykonac zapytanie bezposrednio na bazie danych (moze byc problem z uprawnieniami do pliku, jezeli robimy to przez php, ale nie musi). |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
@up no chyba nie.. tak to chyba na localhost ale itak scieżka c:/... jest jakimś żartem
![]() Btw autor chyba wie gdzie ma ten plik nie sądzisz? Ten post edytował com 22.11.2013, 14:33:30 |
|
|
-Gość- |
![]()
Post
#9
|
Goście ![]() |
To, że autor wie gdzie ma plik, nie znaczy ze baza danych wie.
Wykonujac zapytanie load data bez podania sciezki bezwzglednej, mysql szuka pliku wzgledem plikow aktywnej bazy danych. W moim przypadku plik nalezaloby umiescic w : "/var/lib/mysql/db/contacts.csv". Prawda, że intuicyjne? Niemniej sądze, że ktoś kto uczy się dopiero syntaxu LOAD DATA zostanie najzwyczajniej wprowadzony przez Ciebie w błąd w powyższy sposób. Tak czy inaczej pozostaje podac sciezke bezwzgledna, lub wzgledną ale względem binarek bazy danych. Nie widze, dlaczego bezwzgledna mialaby byc zartem. Proszę, powiedz dlaczego tak uważasz, może się czegoś nauczę. Pozdrawiam. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
owszem moze być scieżka bezwzgledna ale wzgledem serwera a nie systemu...
Bo nie wiesz jaki autor ma system, tak samo nie wiesz jaki bedzie na produkcji.. pewnie linux ale moze być też windows... zresztą podano link do manuala a tam wszystko jest napisane ![]() Ten post edytował com 22.11.2013, 15:22:41 |
|
|
-acquired didelsh- |
![]()
Post
#11
|
Goście ![]() |
Ścieżka bezwględna względem... ?
>bezwzględna >względem Sądzę, że może dosyć już umyślnego wprowadzania w błąd. Pamiętaj, że to przedszkole i albo piszesz tak aby pomagać, albo nie piszesz wcale. Nie można tutaj liczyć na to, że człowiek któremu odpowiadasz domyśli się czegoś, co dla ciebie jest oczywiste. Co jest natomiast proste, to to, że zapytanie które podali koledzy NIE ZADZIAŁA. I jak widać po odpowiedziach autora, nie zadziałało. Nie ważne czy na serwerze, czy lokalnie, należy podać ścieżkę bezwzględną lub względną względem bazy danych, co wcale nie jest proste dla początkującego. Pozdrawiam! |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ścieżka bezwględna względem... ? >bezwzględna >względem Czepiasz się zapisu a chodziło po prostu o to że nie odwołuje się do c:/.. tylko jak już do var/... Spójrz co autor rozwiązania napisał: Cytat Zajrzyj tu znajdziesz przykłady http://dev.mysql.com/doc/refman/5.1/en/load-data.html Wiec logiczne jest że zagląda się tam żeby zapoznać się z czymś z czym sie nie miało do czynienia... I własnie dlatego, że to jest przedszkole wiec dajemy konkretną odp... ale wszystkie szczegóły znajdzie w manualu po to on jest a nie po to żeby przepisywać go tutaj na nowo... to o czym mówisz przecież tam zostało napisane... np.
Ten post edytował com 22.11.2013, 19:03:03 |
|
|
-Gość- |
![]()
Post
#13
|
Goście ![]() |
Cytat Czepiasz się zapisu a chodziło po prostu o to że nie odwołuje się do c:/.. tylko jak już do var/... Przykro mi, ale nadal nie rozumiem dlaczego się tego tak uczepiłeś. Dlaczego nie odwoływać się do przykładowego c? Co w tym takiego smiesznego? Szanse,że kolega wyżej działa na windowsie, jak z lekka licząc 95% początkujących, są dosyć solidne. Łatwiej chyba przyznać się, że klepnąłeś coś nie pomyśliwszy, niż próbować z tego jakoś wybrnąć ![]() Cytat Wiec logiczne jest że zagląda się tam żeby zapoznać się z czymś z czym sie nie miało do czynienia... No, żeby to jeszcze było tam bezpośrednio opisane (nie z kontekstu) ![]() ![]() Nie chcę już za dużo offtopować, ale naprawdę panowie, w przedszkolu pomagajmy. ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
to skoro posiadasz taka wiedzę to załóż konto, a nie pisz jako gość, bo próbujesz nam zarzucić niekompetencje, co Ci słabo idzie.. Mówisz że pracujesz na linux to czemu wciskasz rozwiązanie dla windows w dodatku locahosta? bo na jakim serwerze dadzą Ci dostęp do c:/... ? Ponadto gdzie autor podał, że testuje to na localu? a jak zrobi tak jak mu sugerujesz to zaraz przyleci z nowym postem i powie, że nie działa bo wpakował c:/ na serwie ... słusznie zwróciłeś uwagę na to że trzeba pamiętać o ścieżce do pliku, ale jak zastosuje c:/... to o przenośności może zapomnieć, a skoro jego założeniem było trzymanie danych w csv to chyba nie robi tego tylko po to żeby zawsze stosować to tylko na localhost... bo nawet jeśli teraz to tam odpala, to po to się teraz tego uczy żeby potem móc takie zastosowanie przenieść na produkcje... Wiec to Ty najpierw się zastanów a potem próbuj dyskutować... Bo jakby nie było to co tu wszyscy robią, sam dałbyś mu takie samo rozwiązanie wiec
Cytat naprawdę panowie, w przedszkolu pomagajmy. to jakieś gorzkie żale... Poza tym slashe Ci się pomyliły bo na win masz \ a nie / , a pisałem tak samo bo "cytowałem" to co naskrobałeś ![]() |
|
|
-Gość- |
![]()
Post
#15
|
Goście ![]() |
Witam ponownie,
Niestety, ale interesuje mnie tylko techniczna strona zagadnienia, nie Twoje ładunki emocjonalne. Twój post od strony technicznej nie wniósł absolutnie nic. Nie udało Ci się wykazać dlaczego podanie ścieżki bezwzględnej na windowsie jest żartem. Jedyne na co mogę odpowiedzieć, to wykazać błąd logiczny w rozumowaniu takim, iż uważasz za słuszne założyć, że kolega pracuje na linuksie ale założyć, że pracuje na windowsie lokalnie, już nie wolno. Ja natomiast uważam to za równoprawne założenia. Od strony tech. nadal pozostaje fakt, że należy podać ścieżkę bezwzględną, lub względem baz danych co czyni każdy powyższy post mylącym. Tyle w temacie. A jeżeli nawoływanie do pomagania nazywasz gorzkimi żalami, to niestety, ale już totanie nie rozumiem dlaczego. PS. O ile dobrze pamiętam, na windowsie slashe można stosować zamiennie. Przynajmniej na pewno w linii komend. Więc żółć wylana, znów płynie na Ciebie. Pozdrawiam, życzę wiecej podejścia technicznego, mniej emocjonalnego. Przyda się w dalszej pracy ![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
podanie ścieżki bezwzględnej na Windowsie nie jest żartem tylko pakowanie tego to co napisałeś c:/ bo zadziała mu to tylko w jednym konkretnym przypadku, wiec takie rozwiązanie w niczym mu nie pomaga... Bo ono ma być uniwersalne a nie robione pod localhosta... być może piszesz strony do szuflady, ale nie zakładaj ze każdy tak robi...
Uwierz kolego jestem na tym forum już jakiś czas i nie trudno było zaobserwować, że połowa osób która ma tu jakiś problem, albo nie potrafi czytać dokumentacji albo jak dostaje prawie gotowe to im się wydaje, że wystarczy to już skopiować 1 do jeden i zacznie im działać... A to forum jest po to żeby dać takim osobą rzetelne wskazówki, a nie gotowca, jeśli chcą gotowca to jest takie miejsce jak zlecę.. Bo w ten sposób niczego się nie nauczą i marne są szanse na to żeby zaistnieć w tym zawodzie... Można stosować, dlatego, że są tacy dla których slash w ta / czy w tą \ to to samo... Wiec potem pojawiają się rozwiązania idiotoodporne, ale skoro już podajesz adres dla Windows to podawaj w windowsowy sposób, a nie jak Ci się podoba... A osoby podające rozwiązanie podały takie jak podają w manualu, z modyfikacja pod konkrety problem, wiec to jest jakaś twoja mylna nadinterpretacja... Jakbyśmy nie pomagali to by nikt nie napisał o LOAD DATA INFILE i nie było by tej dyskusji... Tylko jak się jest zaślepiony własnym ego to się potem nie widzi oczywistych rzeczy... I to nie ja podszedłem do tego emocjonalnie tylko Ty, bo to Tobie się zabrało na dywersje na temat tego co napisałem chociażby w poście http://forum.php.pl/index.php?s=&showt...t&p=1076761 , gdzie można było zakończyć tą dyskusje.. Cytujac: Cytat Bo nie wiesz jaki autor ma system, tak samo nie wiesz jaki będzie na produkcji.. pewnie linux ale może być też Windows... Wiec jakbyś nie zauważył napisałem to w 2 zdaniach co próbowałeś mi powiedzieć teraz... Tylko tak to jest jak się czyta wyrywkowo i tylko to co komu pasuje...zresztą podano link do manuala a tam wszystko jest napisane Podsumowując nie zrozumiałeś mojego przekazy, czytanie ze zrozumieniem się kłania.. i stąd pewnie cała twoja dygresja ![]() Pozdrawiam Ten post edytował com 24.11.2013, 00:46:40 |
|
|
-Gość- |
![]()
Post
#17
|
Goście ![]() |
Cytat być może piszesz strony do szuflady, ale nie zakładaj ze każdy tak robi... (...) Tylko jak się jest zaślepiony własnym ego to się potem nie widzi oczywistych rzeczy... http://pl.wikipedia.org/wiki/Argumentum_ad_personam Nic do dodania. Wracając jednak do tematu Cytat nie jest żartem tylko pakowanie tego to co napisałeś c:/ bo zadziała mu to tylko w jednym konkretnym przypadku, wiec takie rozwiązanie w niczym mu nie pomaga Sądzę, że idziesz w zaparte, ponieważ nie do końca rozumiesz istotę problemu. Pozwolę sobie zatem wyjaśnić, mamy tak naprawdę dwie opcje : -Podać ścieżkę bezwzględną. -Podać ścieżką wzgędem serwera. Pierwsza zakłada brak przenośności. Druga również zakłada brak przenośności. ( i tak nie unikniesz tego początkowego ../../../ oraz..... podania najzwyczajniej nastepnie katalogu bezwzglednie) I w tym właśnie tkwi problem. To zapytanie nie ma przenośności. Jeżeli masz jakiś pomysł, jak zapewnić przenośność temu zapytaniu, to proszę bardzo. My natomiast u mnie w firmie zawsze stosowaliśmy ścieżki bezwzględne, a najlepsze co wymyśliliśmy to trzymanie ścieżki w configu. Przy przenoszeniu pomiędzy serwerem a localhostem zmieniany był config. Być może poświęciliśmy na to za mało czasu. Nie wiem. Sądzę, że teraz bardziej rozumiesz, dlaczego tak a nie inaczej zareagowałem na Twoj komentarz. ("Proszę, powiedz dlaczego tak uważasz, może się czegoś nauczę.") Naprawdę sądziłem, że masz coś sensownego do dodania ![]() Niemniej jednak, póki nie masz - faktem pozostaje to, że wyśmiałeś poprawne rozwiązanie ("jest jakimś żartem!"). Wnioskuje również, że nie miałeś z nim wcześniej do czynienia, a nawet byćmoże go nie używałeś w praktyce - po tym, że napisałeś "autor chyba wie gdzie ma plik nie sądzisz?". Ale to tylko wniosek, mogę się oczywiście mylić. Dodać mogę jeszcze jedynie tyle, że nie pisałbym w tym temacie tyle, gdyby nie fakt, że sam zęby zjadłem na tym, jak używałem pierwszy raz. I wręcz za znęcanie się uważam podsunięcie komuś w przedszkolu tego zapytania do wykonania w PHPie i nie wytłumaczenia, że ścieżka ma być relatywna wcale nie względem skryptu. Rozumiem, że warto uczyć czytać manuala, ale w tym przypadku manual nie opisuje tego problemu w sposób wystarczający do zrozumienia dla początkującego (naprawdę! zerknij). Zatem ponawiam pytanie, dlaczego podanie ścieżki bezwzględnej jest żartem, lub nawołuje do przynania się do błędu. Tak aby była jasnośc. Dla przyszłych czytających ten temat, nie dla mnie. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 16 Dołączył: 21.06.2013 Ostrzeżenie: (0%) ![]() ![]() |
Autor chyba sobie już odpuścił pliki CSV
![]() Podawanie ścieżki względnej jest bardziej problematyczne ale również możliwe. Bo nie możemy założyć że MySQL zaczyna w tym samym katalogu co nasz skrypt PHP dlatego ścieżki powinny zawsze być bezwzględne chyba że doskonale wiemy o ile katalogów się cofnąć itd. to jednak nie ma sensu bo wystarczy mała zmiana w konfiguracji serwera i nam się skrypt wysypie. -------------------- devstrefa.wordpress.com
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
@up i właśnie o to chodziło...
a jeśli nie __DIR__ to zawsze można użyć $_SERVER['DOCUMENT_ROOT'] ... To Ty Gościu nie zrozumiałeś mojego przekazu i nadal go nie rozumiesz... Ścieżka bezwzględna jak najbardziej ale nie podawana na sztywno, dlatego zwróciłem Ci na to uwagę... Cytat Pozwolę sobie zatem wyjaśnić, mamy tak naprawdę dwie opcje : -Podać ścieżkę bezwzględną. -Podać ścieżką wzgędem serwera. Mylisz się owszem są dwie możliwości ale one wyglądają tak: -Podać ścieżkę bezwzględną. (czyli $_SERVER['DOCUMENT_ROOT'] , a nie c:\... -Podać ścieżką wzgędem skryptu. (względną) ( tu oczywiście wygląda to tak jak mówisz ../.../...) Jeszcze raz powtarzam czytaj ze zrozumieniem, bo na obojętnie jakim serwerze to odpalisz nie masz dostępu bezpośredniego do zasobu c:/..., tylko twoim zasobem bezwzględnym jest lokalizacja tam gdzie został zainstalowany serwer, myślę, że teraz to w końcu zrozumiesz, szczerze to szkoda że nie posiadasz konta bo w tym wątku było to nie potrzebne... Oczywiście istnieje możliwość manipulacji tymi ścieżkami, co nawet pozwala na do stęp do serwerów obcych ale to nie ma związku z tym tematem.. Ten post edytował com 24.11.2013, 18:13:38 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 14:23 |