Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> LOAD DATA - problem
maciejkiner
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 7.03.2004

Ostrzeżenie: (0%)
-----


Witam

Mam nastepujacy kod

  1. <?php
  2. $sqlq="LOAD DATA INFILE 'daneopisy.csv' INTO TABLE `db_opisy` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY 'rn' ";
  3. echo sql($sqlq);
  4. ?>


poprawiam
---
nospor



No i niestety kod sie nie wykonuje :/ Podejrzewam, ze problem lezy w formacie sciezki dostepu (plik CSV znajduje sie w podkatalogu DANE katalogu w ktorym znajduje sie skrypt). Probowalem rozne mozliwosci, rozne rodzaje "ukosnikow" ( / i \ ) i inne sposoby, ale ciagle nie dziala. SQL to funkcja ktora wykonuje zapytanie.

z gory dzieki za pomoc

pzdr
maciejkiner
Go to the top of the page
+Quote Post
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


Mozesz tutaj wkleic kilka linijek pliku CSV oraz pokazac strukture tabeli - latwiej wowczas bedzie mi dokladnie zaprezentowac rozwiazanie w Twoim przypadku.
Go to the top of the page
+Quote Post
maciejkiner
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 7.03.2004

Ostrzeżenie: (0%)
-----


Witam

Prosze:
Kod
1;Ewolucja;
2;Kapitan Corelli;
3;Shrek;
4;Czekolada;2000
5;Powiedz... tak;
6;Tomb Raider;
7;Poranek kojota;
8;Dziennik Bridget Jones;2001


Trzy kolumny, pierwsza INT, druga jakis STRING (tzn CHAR winksmiley.jpg ), a trzecia INT, ale opcjonalny bo jak widac nie zawsze jest...

pzdr
maciejkiner
Go to the top of the page
+Quote Post
mhs
post
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


Cytat
Podejrzewam, ze problem lezy w formacie sciezki dostepu (

Być może masz rację, a najprawdopodobniej wynika to z tego, że jeżeli nie podasz bezwzględnej ścieżki do miejsca gdzie znajduje się plik mysql zaczyna poszukiwania pliku od katalogu bin gdzie znajduje się oprogramowanie.

Teraz tak. Na podstawie tego co pokazałeś przygotowałem moją wersję zapytania SQL:

  1. LOAD DATA INFILE 'e:\asdf.csv'
  2.  
  3. INTO TABLE test FIELDS TERMINATED BY ';'
  4. LINES TERMINATED BY '\r\n';


Prawdę powiedziawszy Twojego zapytania nie sprawdzałem więc nie wiem czy jest dobre czy też nie. W każdym bądź razie to powyższe zapytania działa prawidłowo.

Oczywiście z konsoli wydanie takiego polecenia nie jest problemem. Widze jednak, że chcesz taki efekt uzyskać z poziomu php. Oto kod (oczywiście okrojony do niemal maksimum):

  1. <?php
  2. $polaczenie = mysql_pconnect('localhost', '', '');
  3.  
  4.  
  5. $zapytanie = "LOAD DATA INFILE '". $_SERVER[DOCUMENT_ROOT] . "/dane/asdf.csv' INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY 'rn'";
  6.  
  7. mysql_query($zapytanie);
  8. ?>


Myślę, że nie muszę tłumaczyć. Do określenia pozycji pliku asdf.csv użyłem $_SERWER['DOCUMENT_ROOT'].

Myślę, że po drobnych modyfikacjach powinno u Ciebie działać prawidłowo.

Pozdrawiam.


---edit----
Patrzać na wczorajszy post widzę jedną nieścisłość.
Cytat
że jeżeli nie podasz bezwzględnej ścieżki do miejsca gdzie znajduje się plik mysql zaczyna poszukiwania pliku od katalogu bin gdzie znajduje się oprogramowanie.
Pewnie można podać względną ścieżkę chociaż nie zmienia to faktu, że w przypadku jej braku plik szukany jest w katalogu bin.

Ten post edytował mhs 19.10.2005, 07:24:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:00