Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: LOAD DATA - problem
Forum PHP.pl > Forum > Bazy danych > MySQL
maciejkiner
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
mhs
Mozesz tutaj wkleic kilka linijek pliku CSV oraz pokazac strukture tabeli - latwiej wowczas bedzie mi dokladnie zaprezentowac rozwiazanie w Twoim przypadku.
maciejkiner
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
mhs
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.