![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
ok juz sobie poradziłem z ta niezgodnością ver w poprzednim poscie ale powstał następny problem ![]() plik csv wyglad tak:
i nie chcialbym przerabiac pliku csv bo jest to surowy plik wyeksportowany jako csv z excela import do bazy wyglada tak:
logi nic nie krzyczą blada mysql nie zwraca gdzie jest problem - dzieki za pomoc Ten post edytował todziu 29.11.2010, 21:33:15 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jak wrzucisz to do phpMyAdmina też nic nie otrzymujesz w zwrotce? Wydaje mi się, że jest to problem nie podania kolejności kolumn, chociaż mySql sobie z tym raczej radzi. Dziwi mnie brak jakiegokolwiek zwrotu o błędzie.
-------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
No wlasnie import w PHPMyAdmin zwraca takim zapytaniem:
skopiowano pomyslnie xxxx wierszy i to wszystko |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To może masz problem z prawami to pliku /tmp/test.csv ? Bo to by oznaczalo, że jesteś rootem na tej maszynie, bo masz dostęp do folderu /tmp/, a ta możesz dodać plik jako root, którego już niestety mysql nie odczyta. Spróbuj dodać tam 0777, albo zmienić właściciela pliku.
Ewentualnie dodaj ścieżkę względną do tego CSV ![]() -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
no tak ale o tym juz log powinien krzyczec
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No własnie z doświadczenia wiem, że LOAD DATA się dziwnie zachowuje zawsze, przy czym w 25% przypadków, nawet nie powie, że coś się nie udało. Ale może to po prostu mój brak wiedzy :-)
Wracając do tematu, jeżeli uważasz że masz prawa do tego pliku i mySQL go widzi, to spróbuj dodać w taki sposób jakiś fakowy plik typu 1;2;3;4 po to tylko, żeby zobaczyć czy się zaciąga. Jeżeli coś się udaje phpMyAdminowi to niekoniecznie uda Ci się to przy normalnym połączeniu. Poszukam Ci jutro coś w manualu SQLa o tym, sam też zaglądnij, dzisiaj już czas do wyrka ;-) -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Qrde juz nie mam sily do tego LOAD DATA.. z poziomu php
moj plik importu import.php
w logach "ZERO" i nie importuje danych z pliku test.csv natomiast z poziomu konsoli dziala bez ploblemu -->
chyba to zrobie na funkcji exec... ![]() Ten post edytował todziu 3.12.2010, 15:49:46 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Doszukałem się informacji, że PHP może nie mieć odpowiednich uprawnień do wykonania takiej akcji, ale można to obejść nadająć folderowi i plikowi 0755 i wykonując:
Spróbuj proszę, bo sam ciekawy jestem czy tak pójdzie ;-) Ten post edytował Quadina 3.12.2010, 17:18:27 -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
No niestety nie działa
![]() plik import.php
prawa do pliku: -rwxr-xr-x 1 root root 337 2010-12-04 00:21 import.php prawa do katalogu: drwxr-xr-x 4 root root 4096 2010-12-04 00:21 import/ próbowałem plik test.csv importować z katalogu /tmp jak i z katalogu /var/www/htdocs/import widziany z zewnątrz - import zakończony niepowodzeniem error_log nic nie wydala :/ pozdr. spadam spac |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Teraz Ci powiem, żeby oczywiście większe jaja byly ;-) Że mi Twój skrypt załadował Twoje przykładowe dane do pseudotabeli postawionej na varcharach ;-)
Wydaje mi się w takim razie, że to kwestia praw albo w mySQL, albo jakiejś konfiguracji na Twoim serwerze. Niestety zaczęły mi się kończyć pomysły, zatem nie pozostaje mi nic innego jak po prostu zaproponować Ci skrypt odczytujący csv i ładujący go wiersz po wierszu ;-) -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
oooo
![]() load data local infile... mysql krzyczy : The used command is not allowed with this MySQL version jezeli pominę LOCAL Access denied for user 'todziu'@'Linux' (using password: YES) jezeli napisze zwyklego selecta ktory pobiera 1 rekord z bazy przy tych samych ustawieniach bezproblemu laczy sie z baza |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html
W takim razie odpowiedź jest jedna. Twój serwer jest tak skonfigurowany, że PHP nie będzie miało uprawnień do wykonania LOAD DATA. Musiało by być przekompilowane z odpowiednią dyrektywą. W takim razie nie pozostaje nic innego jak exec() :/ Co nie jest zbyt ciekawym rozwiązaniem... Co do wysyłania przez skrypt. Zgadzam się, że jest to dość toporne. Ale przy takim dużym pliku możesz ładować zasadą phpMyAdmina. To znaczy, że wysyłasz w INSERT VALUES w nawiasach więcej informacji, np. paczki po 50-100 sztuk. Dzięki przejściu fopen('','r') możesz przechodzić przez plik nie przeładowując pamięci. Więc można zoptymalizować skrypt z 10 minut nawet do jednej. W razie co mogę Ci tutaj przedstawić jakieś moje wersje takiego cuda, ale to już po weekendzie. Niestety obowiązki na uczelni nie pozwalają. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
ok poprosze- generalnie chodzi mi o to - mam 2 duze pliki w xls okolo 90tys reakordow i musze z tych dwóch plików znaleźć cześć wspólna czyli na zasadzie porownania wartosci w obu plikach - i takie zest musze robic w pracy co jakis czas - i nie ukrywam ze mi troszke czasu na to zchodzi import export itp do tej pory bylo tak oba pliki importowalem poprzez phpmyadmin do mysql tam pisalem zapytanie ktore mi wywalilo wszystki rekordy ktore wystepuja w obu bazach i zapisywalem to do xls w Mysql Query Browser - no i nadszedl czas zoptymalizowac ten proces :-) - i wlasnie chce zrobic aby uzytkownik poprzez www sam wrzucal plik w csv autom. import do bazy z odpowiednim zapatyniem a spowrotem dosteja plik wynikowy w csv
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat INSERT VALUES w nawiasach więcej informacji, np. paczki po 50-100 sztuk - to też nie zawsze przejdzie, najgorsze w tym jest to, że potrafi się część danych załadować a nie dostaniesz żadnego info.Cytat duze pliki w xls okolo 90tys reakordow - no bez jaj, 90 tys. to dużo? Z powodzeniem ładowałem LOAD DATA pliki po milion rekordów, spokojnie ładowało się w tle i nie było problemów, ja robiłem to tak:
Wrzucasz ten plik do 'public'? Nie może być "access denied" jeśli do pliku każdy ma dostęp, to nielogiczne. Warto też tu poczytać: http://dev.mysql.com/doc/refman/5.1/en/load-data.html I sprawdź wersje mysqla, za nieaktualizowanie oprogramowania adminów serwerów należy karać ![]() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 16.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
No niestety ten import z poziomu php również nie przeszedł - ver serwera MySql 4.1.14, PHP Ver. 4.4.0- natomiast poprzez funkcję exec importuje bez problemu także myślę, że to nie jest wina ver mysql bo to samo zapytanie wykonuje sie bez problemu z shell-a - ale dzieki za info ważne, że sie importuje jeszcze tylko pozostał mi export wyniku zapytania do pliku csv.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.05.2025 - 14:35 |